Laravel查询急切的负载

时间:2017-01-17 21:10:13

标签: php laravel eloquent

我在Laravel中得到了这个查询:

return Forum::with(['users' => function($query){
            $query->select('user.id', 'user.name', 'user.last_name');
        }])->latest()->withCount('messages')->paginate(10);

这将返回在论坛中发布消息的所有用户。

在我的论坛模型中我发现了这些关系:

public function users()
{
    return $this->belongsToMany(User::class, 'message');
}


public function messages()
{
    return $this->hasMany(Message::class);
}

我只想收到发布消息的最新用户。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

您可以按消息关系检索最后一个用户,请尝试以下操作:

return Forum::with(['messages' => function($query){
    $q->orderBy('created_at', 'desc');
},'messages.users'])->first();

答案 1 :(得分:0)

使用has()方法并按降序排列created_at。

User::has('forums.messages')->orderBy('created_at','desc')->first();