使用 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

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2

这代码没法看。。。

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

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

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

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

4年前 评论

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