laravel-eloquent->wherehas-write-your-your-exists(子查询)

1cosmwyk  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(413)

拉威尔口若悬河 ->whereHas() 使用 exists() 子查询-https://dev.mysql.com/doc/refman/8.0/en/exists-and-not-exists-subqueries.html -以便返回结果。
我想写我自己的子查询,但我不知道如何告诉雄辩->它在哪里。
如果我这样做了:

$query->where( DB::raw(' exists( subquery ) ')

laravel将子查询编写为:

where exists( subquery ) is null

所以我只是想知道 $query->method() 可用于将exists()子查询添加到“where”语句。子查询将与laravel生成的子查询相同,但会写出:

... and exists ( select * from `tbl` inner join `assets` on `custom_assets`.`id` = `tbl`.`asset_id` where `assets`.`deleted_at` is null and `users`.`id` = `assets`.`client_id` and `field_id` = ? and (`value` = ? and `assets`.`deleted_at` is null )
jhdbpxl9

jhdbpxl91#

使用 whereRaw() :

$query->whereRaw('exists( subquery )')
zbdgwd5y

zbdgwd5y2#

请阅读此处的描述
您可以在那里找到这个代码示例。还可以在wherehas中为自定义查询添加闭包。

// Retrieve all posts with at least one comment containing words like foo%
$posts = App\Post::whereHas('comments', function ($query) {
    $query->where('content', 'like', 'foo%');
})->get();

相关问题