雄辩。获取多个关系并对它们进行排序

时间:2015-12-21 15:02:11

标签: php laravel eloquent

我有一个属于许多'event'的用户模型,也属于很多'me_resource'。

对于活动日志,我想获取所有用户事件和我的资源,然后通过pivots updated_at属性对它们进行排序。

这样的东西就是我要找的东西

user->events()->me_resources()->orderBy('pivot.updated_at')->get()

但当然me_resource是关于用户而不是关于事件的关系,并且它们每个都通过不同的数据透视表与用户相关。

以下是查询应返回的示例

id:87, resource_name:'hello', ..., updated_at:21/12/2015 //newest
id:32, event_name:'meeting', ..., updated_at: 20/11/2015 // second newest
id:11, resource_name:'questions', ..., updated_at: 27/02/2015 // third newest 

1 个答案:

答案 0 :(得分:1)

如果您想继续使用Eloquent关系,我建议您使用Collection来处理逻辑。但是,使用查询构建器可能会更有效。

$user = User::with('events', 'me_resources')->find($user_id);

$collection = new \Illuminate\Database\Eloquent\Collection();
$collection->merge($user->events);
$collection->merge($user->me_resources);
$results = $collection->sortByDesc('updated_at');