获取数组中对象的编号,但不获取对象本身。 - Laravel 5.2

Posted

技术标签:

【中文标题】获取数组中对象的编号,但不获取对象本身。 - Laravel 5.2【英文标题】:Getting the number of an object in array, but not the object itself. - 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 我的错,错过了那部分:( 【参考方案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 方法。

【讨论】:

以上是关于获取数组中对象的编号,但不获取对象本身。 - Laravel 5.2的主要内容,如果未能解决你的问题,请参考以下文章

如何从 JSON 数组中的 JSON 对象中的单个值获取数据?

如何从 API 获取 JSON 数组中没有名称的 JSON 对象

获取页面中选定的单元格编号

用 C# 编写的 COM 对象 - 获取类,但不获取方法

如何存储数组到sharedpreference中

36. 对象编号获取