Laravel-获得多种关系中的前五名
我有一个用户,一个图库和一个日志。关系如下: 用户有许多图库 画廊有很多日志Laravel-获得多种关系中的前五名,laravel,relationship,Laravel,Relationship,我有一个用户,一个图库和一个日志。关系如下: 用户有许多图库 画廊有很多日志 我需要从任何库中检索属于该用户的5个最新日志。让我困惑的是,我如何才能将所有画廊放在一起,并从所有画廊中选出前5名?假设你们的关系如下: users id - integer name - string galleries id - integer user_id- integer name - string logs id - integer gallery
我需要从任何库中检索属于该用户的5个最新日志。让我困惑的是,我如何才能将所有画廊放在一起,并从所有画廊中选出前5名?假设你们的关系如下:
users
id - integer
name - string
galleries
id - integer
user_id- integer
name - string
logs
id - integer
gallery_id - integer
title - string
您可以使用hasManyThrough关系()
编辑
您不能限制关系中的日志数。解决方法是单独加载请求的约束关系,如下所述:
您可以更新您的用户模型:
/**
* Limit the relationship to only include 5 results
*/
public function onlyFiveLogs()
{
return $this->logs()->take(5);
}
然后,对于每个$user,您可以手动加载关系:
$users->each(function($user) {
$user->load('onlyFiveLogs');
});
请分享相关的代码,比如:User::with('gallers','logs')->take(5)->get();您可以获取所有用户的图库并仅提取图库id,然后对日志执行查询,其中galleryId位于您以前获得的图库id列表中,然后按日期描述排序,并限制为5@ChristopheHubert没有太多代码可发布。。我只是有这些关系,需要获取这些数据。@NapsterAhmed logs与库有关系,但与用户没有关系。。
/**
* Limit the relationship to only include 5 results
*/
public function onlyFiveLogs()
{
return $this->logs()->take(5);
}
$users->each(function($user) {
$user->load('onlyFiveLogs');
});