使用 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的时候输出的查询语句
以下是当角色为User时出现的错误
推荐文章: