Laravel 莫名错误 求帮助 小白谢过

不点击分类名是正常的

clipboard.png
点击后:

clipboard.png
控制器代码:

 public function index(Request $request,$id=null){
       if($id){
       //通过分类id获取 分类下所有影片id
            $db = \DB::table('film_info')->select('id')->where('type_id',$id)->get();
            //通过影片id链接查询 评论内容和用户        
          foreach($db as $v){
                $film_cmt[] = \DB::table('film_cmt')
                            ->join('film_info', 'film_cmt.film_id', '=' , 'film_info.id')
                            ->join('user', 'Film_cmt.user_id', '=', 'user.id')
                            ->select('film_cmt.id',
                                     'user.name',
                                     'film_info.title',
                                     'film_cmt.time',
                                     'film_cmt.text'
                                    )
                            ->where('film_id',$v->id)
                            ->paginate(5);    
 
            }    
            
                //数据转为一维数组
             foreach($film_cmt as $stu){
                 foreach($stu as $v){
                     $list[]  = $v;
                 }
             }    
 
        }else{
            
         
          $list = $this->join();
 
         
         }
         $where = [];
     if($request->has('title')){
         $title = $request->input('title');
         $db->where("title","like","%{$title}%"); 
         $where['title'] = $title;
     }    
         //查询分类表 id 分类名
         $type_table = \DB::table('film_type')->select('id','type')->get();    
     return view('admin.Film_cmt.index',['cmt'=>$list,'where'=>$where,'type_table'=>$type_table]);
     }
 
     public function join(){
                $film_cmt = \DB::table('film_cmt')
                            ->join('film_info', 'film_cmt.film_id', '=' , 'film_info.id')
                            ->join('user', 'Film_cmt.user_id', '=', 'user.id')
                            ->select('film_cmt.id',
                                     'user.name',
                                     'film_info.title',
                                     'film_cmt.time',
                                     'film_cmt.text'
                                    )
                            ->paginate(5);
                return $film_cmt;        
     }

模版代码

<div class="box-body">
              <table class="table table-bordered">
                <tr>
                  <th>评论ID</th>
                  <th>用户</th>                     
                  <th>影片名</th>
                  <th>评论内容</th>
                  <th>评论时间</th>
                  <th style="width: 100px">操作</th>
                </tr>
                @foreach($cmt as $stu)
                    <tr>
                        <td>{{$stu->id}}</td>
                        <td>{{$stu->name}}</td>
                        <td>{{$stu->title}}</td>
                        <td>{{$stu->text}}</td>
                        <td>{{$stu->time}}</td>
                        <td> <a href="{{url('admin/cmt/del')}}/{{$stu->id}}">删除</a> | <a href="{{url('admin/cmt/edit')}}/{{$stu->id}}">编辑</a></td>                         
                    </tr>
                @endforeach
              
               
              </table>
            </div><!-- /.box-body -->
            <div class="box-footer clearfix">
            {{$cmt->appends($where)->links()}}
            </div>
          </div><!-- /.box -->

阅读 3.6k
6 个回答

你的list是一个数组,但是数组有$arr->a这种调用方法吗?
报错信息已经写的很明白了

这种情况是渲染之后的文件报错,你可以直接去storage/framework/views下面找到报错文件,然后看看89行是什么问题。
估计是对象为null,你的模板代码上传错了,也没办法帮你看

调用了没有定义的成员函数append,错误很明显,再加上那个模板的行数,应该很容易定位

去看你blade.php的89行

$cmt

你dd($cmt)看一下这个变量 报错提示这个是一个array类型的变量 估计你是的db 操作获取结果的时候有问题吧

新手上路,请多包涵

对于报错的问题,一般解决思路是,首先是简单看看你的代码是否有语法错误,其次看laravel.log文件是否有相关的错误,然后看看WEB服务器的错误日志。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题