【问题标题】:Getting the number of an object in array, but not the object itself. - Laravel 5.2获取数组中对象的编号,但不获取对象本身。 - Laravel 5.2
【发布时间】:2016-06-08 08:28:57
【问题描述】:

我的查询遇到了这个问题。

在我的 getIndex 方法中,我列出了一个表中的对象数组,然后在我的 postIndex 中,当我尝试发布它们时,结果发现我发布了数组中对象的编号,但没有对象本身。为什么会发生这种情况,有人?

public function getIndex() {

    $user = Auth::user();

    return view('educator.account.account',[
        'user' => $user,
        'class'=> ClassSubject::where('teacher_id','=',$user->id)()->lists('class_id'),
        'subject'=> ClassSubject::where('teacher_id','=',$user->id)->lists('subject_id'),
    ]);
}

public function postIndex(Request $request) {
   ClassSubject::where([
        ['subject_id','=',$request->input('subject')],
        ['class_id','=',$request->input('class')]
    ])->get();

形式:

    <div class="panel panel-default">
        <div class=" panel-heading" id="admin-heading"> Добре дошли!</div>
        <div class="panel-body">
            <br>
            {!! Form::open(['action' => 'Educator\AccountController@postIndex', 'class' => 'form form-vertical' ]) !!}
              <div class="form-group col-md-6">
                <div class="col-md-4">{!! Form::label('class','Избери клас:') !!}</div>
                  <div class="col-md-6">{!! Form::select('class', $class, null, ['class'=>'form-control']) !!}</div>
              </div>
            <div class="form-group col-md-6">
                <div class="col-md-5">{!! Form::label('subject','Избери предмет:') !!}</div>
                <div class="col-md-6">{!! Form::select('subject', $subject, null, ['class'=>'form-control']) !!}</div>
            </div>
            <div align="center">
                <br>
                <br>
                {!! Form::submit('Избери', ['class' => 'btn btn-default']) !!}
            </div>
            {!! Form::close() !!}
        </div>
    </div>

【问题讨论】:

  • 您能给我们您提交的表单的代码吗?
  • 所以你的问题是当你提交表单时你会得到数组的索引id而不是ClassSubject行的ID?
  • 你使用的是哪个 Laravel 版本?
  • @chanafdo 问题标题说 laravel 5.2
  • @Dees040 我的错,错过了那部分:(

标签: php arrays laravel object


【解决方案1】:

这可能在 getIndex() 中对你有用:

return view('educator.account.account', [
    'user' => $user,
    'class'=> ClassSubject::lists('class_id', 'YOUR_HUMAN_READABLE_FIELD')->where('teacher_id', $user->id)->get(),
    'subject'=> ClassSubject::lists('subject_id', 'YOUR_HUMAN_READABLE_FIELD')->where('teacher_id', $user->id)->get()',
]);

让我知道它是否有效。

编辑

这个问题已经解决了,成功了:

DB::table('class_subject')->where('teacher_id', $user->id)->pluck('id', 'name');

【讨论】:

  • 现在我根本没有在下拉列表中获取我的信息
  • 对不起,我忘了添加 '->get()'。我已经更新了我的答案。
  • 缺少 Illuminate\Support\Collection::get() 的参数 1
  • @YoannaMurdjeva 也许你可以试试this
  • 您可以添加我的 Skype(与此处的用户名相同),我会帮助您修复错误,因为它应该是一个“简单”的问题。
【解决方案2】:

当您只传递一个参数时,您将收到一个数组,其值设置为您要传递给lists 方法的列。

但是Form::select 使用数组的keys 作为选项的值,使用values 作为选项的显示名称。

所以使用lists方法如下。

ClassSubject::lists('displayName', 'value')

在 laravel 5.2 中,列表方法已被弃用,并考虑使用具有相同签名的 pluck 方法。

【讨论】:

    猜你喜欢
    • 2016-12-23
    • 2018-01-15
    • 2016-12-25
    • 1970-01-01
    • 2019-11-10
    • 2010-12-28
    • 2013-08-11
    • 1970-01-01
    相关资源
    最近更新 更多