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');
});