Laravel属于ToMany,没有一个
2022-08-31 01:09:40
我有两个表:和,然后我有一个数据透视表,因为它是一个属于ToMany关系。categories
videos
我试图做的是获取所有视频,其中没有一个视频实例属于许多类别之一。
例如:
- 视频 1 属于类别 1、2 和 3。
- 视频 2 属于第 1 类和第 3 类。
- 视频 3 属于第 1 类。
我想获取不在类别2或3中的视频,这意味着这将返回视频3。
到目前为止,我尝试过,这并没有给出预期的结果,这是因为视频1和2仍然找到了另一行,因为它们在类别1中:
Video::whereHas('categories', function($query) {
$query->whereNotIn('category_id', [2,3]);
})->take(25)->get();
从中填充的查询是:
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