使用 orWhere 时出现 class ‘’ not found

我在使用闭包查询时,当我的查询条件等于User的时候会出现 Class ‘ ’ not found 的错误:下面是我的代码

DB::connection()->enableQueryLog();
        $data = Message::select([
            'id','title','created_at','target_id','target_type','type','message_type','content'
        ])->with('target')->latest()->where(function($q){
            $q->where('channel',Message::CHANNEL_DOUYIN);
            $q->orWhere('message_type',Message::MESSAGE_TYPE_SYSTEM);
        });
        echo 'User Role :'.Auth::user()->role.'  ';
        if(Auth::check()){
            $data->where(function ($q) {
                $q->where('user_id', Auth::user()->id);
                $q->orWhere(function ($q) {
                    $q->where('type', Message::TYPE_ALL);
                    if (Auth::user()->role == User::ROLE_USER){
                        $q->orWhere(function ($q) {
                            $q->where('type',Message::TYPE_USER)->where('user_id', 0);//这里的type 值只要不等于User都可以执行,但是如果只有user_id这个查询条件,也是会报相同错误
                        });
                    } else {
                        $q->orWhere(function ($q) {
                            $q->where('type', Message::TYPE_LAWYER)->where('user_id', 0);
                        });
                    }
                });
            });
        }else{
            $data->where('type',Message::TYPE_ALL);
        }

        $data = $data->Paginate();

        $queries = DB::getQueryLog();
        $sqls = [];
       foreach($queries as $query) {

           $tmp = str_replace('?', '"' . '%s' . '"', $query["query"]);
           $sqls[] = vsprintf($tmp, $query['bindings']);
       }

        print_r($sqls);

        exit;

以下截图是当我的角色为Lawyer的时候输出的查询语句
使用orWhere时出现class ‘’ not found

以下是当角色为User时出现的错误
使用orWhere时出现class ‘’ not found

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 2

这代码没法看。。。

5年前 评论
__Alean (楼主) 4年前

orWhere 不是和 Where 配合使用的么? or 语句

$users = DB::table('users')
                    ->where('votes', '>', 100)
                    ->orWhere('name', 'John')
                    ->get();

为何你的查询语句需要嵌套4、5层? 我也觉得没法看啊

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!