我在Laravel中有一些原始DB查询的查询。我可以在表列上使用when子句,但不能在由原始查询别名生成的字段上使用when子句。 我的代码中有以下内容。
$postData = Post::query()
->join('users', function ($join) {
$join->on('users.id', '=', 'posts.user_id')
->where('users.status', '=', '1');
})
->select('posts.id',
'posts.title',
'posts.content',
'posts.type',
'posts.user_id',
DB::raw("IF((select count(*) from favourites where `post_id`=`posts`.`id`
AND `user_id`=$userId AND `deleted_at` IS NULL > 0), true, false ) as liked"),
->orderBy('posts.created_at', 'DESC')
->when($type, function($query) use($type) {
return $query->where('posts.type', $type);
})
>when($likedCheck, function($query) use($likedCheck) {
return $query->where('posts.liked', $likedCheck);
});
->paginate(10);
在以上查询中,$ type上的when子句有效,但$ likedCheck上的when子句无效,因为未找到posts.liked。 更新: $ likedCheck变量为1或0。
答案 0 :(得分:0)