为laravel上的foreach()提供的参数无效

为laravel上的foreach()提供的参数无效,laravel,laravel-5,Laravel,Laravel 5,我收到类似的错误消息:为foreach()提供的参数无效 对于我的方法index(),我有: public function index(Request $request) { if(\Auth::user()->hasRole('admin')){ if($request->has('search')) $remarks = Remark::orderBy('instruction', 'asc')->whe

我收到类似的错误消息:为foreach()提供的参数无效

对于我的方法index(),我有:

public function index(Request $request)
    {   
    if(\Auth::user()->hasRole('admin')){
         if($request->has('search'))
              $remarks = Remark::orderBy('instruction', 'asc')->where('instruction','like','%'.$request->input('search').'%');
         else
             $remarks = Remark::all();
    }else{
         \Auth::user()->load('remarks');
         $remarks = \Auth::user()->remarks;
    }

    return view('admin.remarks.index', compact('remarks'));
    }
关于index.blade.php,我的循环“for”如下所示:

                <th>Instruction</th>
                <th>Description</th>
                <th>Date seance</th>
                <th>Name Candidate</th>
                <th>Email</th>
                </tr>
                </thead>
               @foreach($remarks as $remark)
                <tr>
                   <td> {{$remark->instruction}}</td>
                   <td> {{$remark->description}}</td>
                   <td> {{$remark->seances->date_seance}}</td>
                   <td> {{$remark->seances()->first()->candidates->name}}</td>
                   <td> {{$remark->seances()->first()->candidates->email}}</td>
                   <td>
指令
描述
日期座
候选人姓名
电子邮件
@foreach($备注为$备注)
{{$remark->instruction}
{{$remark->description}
{{$remark->seanse->date\u seanse}
{{$remark->seanses()->first()->candidates->name}
{{$remark->seanses()->first()->候选者->电子邮件}
你知道我的问题吗?我不明白???

您需要在雄辩的查询生成器之后调用
get()
,从数据库中获取数据。除非它是一个有说服力的查询生成器对象(不可编辑,因此不能在for循环中使用)

函数
get()

$rements=Remark::orderBy('instruction','asc'))
->其中('instruction'、'like'、'%'。$request->input('search').%)
->get();

您应该从数据库而不是从会话进行查询,并且不要忘记在用户模型上定义关系:

关于用户模型:

public function remarks(){
   return $this->hasMany(Remark:class)
}
在你的控制器上

  public function index(Request $request)
    {   
    if(\Auth::user()->hasRole('admin')){
         if($request->has('search'))
              $remarks = Remark::orderBy('instruction', 'asc')->where('instruction','like','%'.$request->input('search').'%');
         else
             $remarks = Remark::all();
    }else{
         $user = Users::find(Auth::id());
         $remarks=$user->remarks
    }

    return view('admin.remarks.index', compact('remarks'));
    }

是否总是返回相同的错误?我看到,如果用户有一个管理员角色,并且请求中有一个搜索字段,那么您只是在生成查询,而不是执行查询,因此foreach参数将是一个查询生成器对象,而不是集合@porloscerrosψ:当我连接到角色“administrator”时,我有另一条错误消息。“Method Illumb\Database\Eloquent\Collection::links不存在。”对于这种情况,请查看Tharaka Dilshan的答案,您必须添加一个get或paginate来运行查询。那么,在所有根据情况而变化的情况下,foreach都不起作用吗?您是否在视图中使用分页链接?仅为了调试,我会尝试返回Remark::all(),如果这不起作用,其他链接都不会起作用,问题是elsewhere@porloscerrosψ:我的问题在于我的关系,我已经创建了一个主题。这里更准确,谢谢你,但我总是有同样的信息。。。我做了一个
dd(备注)
我有这样的信息->空???我想
\Auth::user()->备注用户
模型上定义
备注()
关系,则code>返回null。啊,好的,我的问题出在我的模型中。。。你觉得我的架构和模型怎么样?谢谢=>