Kar*_*arl 8 php mysql has-and-belongs-to-many laravel eloquent
我有两个表:categories
和videos
,然后有一个数据透视表,因为这是一个belongsToMany关系。
我想做的是将所有视频都归类为多个类别之一,而不是单个视频实例。
例如
我想获取不在类别2或3中的视频,这意味着它将返回视频3。
到目前为止,我一直在尝试,但并没有得到预期的结果,这是因为仍在视频1和2中找到了另一行,因为它们位于类别1中:
Video::whereHas('categories', function($query) {
$query->whereNotIn('category_id', [2,3]);
})->take(25)->get();
Run Code Online (Sandbox Code Playgroud)
从中填充的查询是:
select * from `videos` where exists (select * from `categories` inner join
`category_video` on `categories`.`id` = `category_video`.`category_id` where
`videos`.`id` = `category_video`.`video_id` and `category_id` != ? and
`category_id` != ? and `categories`.`deleted_at` is null) and `videos`.`deleted_at`
is null order by `created_at` desc limit 25
Run Code Online (Sandbox Code Playgroud)
您可以使用Eloquent的whereDoesntHave()约束来获取所需的内容:
// get all Videos that don't belong to category 2 and 3
Video::whereDoesntHave('categories', function($query) {
$query->whereIn('id', [2, 3]);
})->get();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8498 次 |
最近记录: |