我最近开始学习Laravel,无法用查询解决我的问题。
SELECT * FROM
films
WHERE id IN (SELECT film_id FROMfavorites
WHERE user_id = 2)
这是正确的代码,但是如何为Laravel创建它我试着查看文档,但事实并非如此。也许有人知道如何解决这个问题?
要将其构建为查询,您可以使用whereIn
\DB::table('films')->whereIn('id', function($query) {
$query->select('id')->from('favorites')->where('user_id',2);
})->toSql();
这将产生
select * from `films` where `id` in (select `id` from `favorites` where `user_id` = ?)
你可以使用Eloquent
模型和whereIn()
,如下所示
Films::whereIn('id',Favorites::where('user_id', 2)->pluck('film_id'))->get();
如果你使用Eloquent
模型的关系,那么它将更简单如下
$user->favorites()->films