如何在 Laravel 中订购关系?

Posted

技术标签:

【中文标题】如何在 Laravel 中订购关系?【英文标题】:How do I order a relationship in Laravel? 【发布时间】:2016-01-24 02:49:48 【问题描述】:

我在 *** 中看到了这个问题,但我无法回答,因为它被错误地标记为重复。但是 $user->posts 与 Posts::all() 不同。那么如果你有 User 和 Post,你如何对帖子进行排序呢?

【问题讨论】:

【参考方案1】:

是的,回答我自己的问题只是为了提供帮助。请注意,将帖子作为 var 调用不同于将帖子作为方法调用。 var 解析为查询结果,方法解析为查询构建器。

class User extends Model implements ... 
    public function posts()
            return $this->hasMany('App\Post');
        

    /*

    /**
     * $this->posts is already a collection after query
     */
    public function recentPosts($limit = 5)
    return $this->posts
        ->sortByDesc(function ($post)
            return $post->created_at;
        )->take($limit);
    

    /**
     * $this->posts() is the query builder
     */
    public function latestPosts($limit = 5)
        return $this->posts()
                ->orderBy('created_at', 'desc')
                ->limit($limit)
                ->get();
    


【讨论】:

以上是关于如何在 Laravel 中订购关系?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 的嵌套 2 级关系中按列排序?

如何“按...排序”使用Builder的雄辩关系

如何在 Rails 3 中订购包含的元素

在订购应用程序中设置核心数据关系

Laravel 中几个表之间的关系

我如何在 laravel 中建立深层关系?