按相关表格排序Eloquent Models

时间:2016-01-10 10:25:42

标签: php mysql laravel eloquent

我有一张桌子,我在其中保存电影,然后我有另一张桌子,我根据年龄保存电影的价格。每个年龄都有不同的价格。我现在想做的是获取特定年龄的所有电影,并按价格对其进行排序。

我的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方法。这真的是唯一的可能吗?

0 个答案:

没有答案