【问题标题】:Limiting relationships in Laravel在 Laravel 中限制关系
【发布时间】:2014-11-18 05:02:15
【问题描述】:

我有一个具有 hasMany('Comments') 关系的模型 Post。我想获取所有具有评论关系的帖子,但只有每个帖子的最新一条评论。而且因为有数千个帖子,每个帖子都有数千个 cmets,由于性能问题,这样的选项是不可能的(即为每个帖子加载所有 cmets,然后执行 $post->cmets[0]->value):

Post::with('comments' => function($query){
    $query->orderBy('created_at','desc')
});

我也做不到:

Post::with('comments' => function($query){
    $query->orderBy('created_at','desc')->limit(1)
});

因为这是行不通的。

我完全确定我不是唯一遇到此问题的人,我确实设法找到了一些“解决方案尝试”,但不是一个稳定的工作代码示例。有人可以帮忙吗?

【问题讨论】:

标签: php laravel laravel-4 eloquent relationships


【解决方案1】:

试试这个: 假设您已经在 Post 模型上定义了“cmets”关系。这样你就可以把所有的 cmets 都属于那个:

App\Post::all()->comments()->orderBy('comments.created_at')->take(1)->get();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-03
    • 2019-09-23
    • 1970-01-01
    • 2022-01-19
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    相关资源
    最近更新 更多