作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
基本上我想在 Laravel 中构建 tihs 查询,但它不起作用。
SELECT films.id, films.name AS film
FROM films
WHERE films.id NOT IN
(
SELECT films.id
FROM actors, actor_film, films
WHERE actors.id = actor_film.actor_id
AND actor_film.film_id = films.id
GROUP BY films.id
)
ORDER BY films.id DESC
LIMIT 600
;
使用“whereNotIn”我编写了这两个查询:第一个获取数据库中至少有一个 Actor 关联的所有电影,如下所示:
$films_with_actors = DB::table('films')
->join('actor_film', 'actor_film.film_id', '=', 'films.id')
->join('actors', 'actors.id', '=', 'actor_film.actor_id')
->select( 'films.id')
->groupBy('films.id')
->get();
现在我想获取没有关联 Actor 的电影。为此,我尝试获取上一个方法中未包含的 ID,如下所示:
$films_with_no_actors = DB::table('films')
->whereNotIn('films.id', $films_with_actors)
->orderBy('films.id', 'desc')
->take(500)
->get();
-
有什么帮助吗?
最佳答案
我根据您共享的代码为您提供了一个基本解决方案。
在 Laravel 中,你有一个名为 pluck 的方法用于检索包含给定键的所有值的数组。
因此,您只能获取 $films_with_actors 的 id。类似于(基于您的第一个查询):
$films_with_actors = DB::table('films')
->join('actor_film', 'actor_film.film_id', '=', 'films.id')
->join('actors', 'actors.id', '=', 'actor_film.actor_id')
->select( 'films.id')
->groupBy('films.id')
->pluck('id')->toArray();
现在您有了一个包含 ids 的数组,您可以将该数组包含在第二个查询的 whereNotIn 子句中:
$films_with_no_actors = DB::table('films')
->whereNotIn('films.id', $films_with_actors)
->orderBy('films.id', 'desc')
->take(500)
->get();
关于mysql - 拉拉维尔。使用 WHERENOTIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41107175/
我正在使用 git clone 部署我的 Laravel 项目并使用 git pull 进行更新 它工作正常,但每次部署时,我都必须从 config/app.php providers 数组和 ali
我是一名优秀的程序员,十分优秀!