我有一张桌子,我在其中保存电影,然后我有另一张桌子,我根据年龄保存电影的价格。每个年龄都有不同的价格。我现在想做的是获取特定年龄的所有电影,并按价格对其进行排序。
我的movies
表看起来像这样
id - name
我的prices
表看起来像这样
id - movie_id - age - price
使用以下代码获取数据
/** @var Builder $movies */
// We now get only the movies where the user's age is listed in the price table
$movies = Movie::whereHas('prices', function ($query) use ($age) {
/** @var Builder $query */
$query->where('age', $age);
});
这样我就只能获得特定年龄的电影。但是,现在我想按价格对它们进行排序。我该怎么办?我尝试使用with
代替whereHas
来获取关系,然后通过数据透视表对其进行排序,但问题是,当我使用with
时,我得到83但是,在使用whereHas
时,我获得了76条结果。 76是正确的数字,因为当我用SQL来获得价格为23岁的所有电影时,我得到76
SELECT COUNT(id) FROM prices WHERE age = 23; // 76
当谷歌搜索时,我发现很多人使用join
方法而不是Eloquent方法。这真的是唯一的可能吗?