【发布时间】:2018-07-25 05:56:27
【问题描述】:
我有三个这样的表:
- tour (id name) -> 假设 (id:1 , name : something)
- meta (id key) ->assume (id:1 , key: tour_duration)
- meta_tour (tour_id meta_id value) ->assume (tour_id:1 , meta_id:1 , value: 15)
这是多对多关系。
我想根据 meta_tour 表中的元值对旅游进行排序,如下所示:
tours orderBy tour_duration.value
更新
我试过这个:
Tour::with(['metas' => function ($query) {
$query->where('key', 'tour_duration')
->orderByDesc('value');
}])->paginate(15);
还有这个:
Tour::with(['metas' => function ($query) {
$query->where('key', 'tour_duration');
}])->orderByDesc('value')->paginate(15);
还有这个:
Tour::whereHas('metas' , function ($query) {
$query->where('key', 'tour_duration')
->orderBy('value', 'desc')
})->paginate(15);
但不工作。
【问题讨论】:
-
有一个小问题:您正在尝试获取旅行列表,但由于每次旅行可以有多个元数据,因此您最终会得到包含重复旅行的列表,并且(我认为)除非您使用联接查询它,否则您无法得到它
-
谢谢,你能给我看看加入的例子吗?我是新手,我不知道如何根据我的问题连接表。
-
您想多次获得包含多个
meta_tour条目的导览吗?还是只有一次? -
我想获取所有具有元名称“tour_duration”的旅行。(每个旅行都有一个 tour_duration)并使用 tour_duration 值对旅行进行排序。
标签: php laravel eloquent pivot