Laravel 如何按照 Relation 关系排序?
假设目前用如下的关联关系
- 一个用户可以拥有多篇文章
- 一篇文章只属于一个用户
// User.php
public function posts()
{
return $this->hasMany(Post::class);
}
// Post.php
public function user()
{
return $this->belongsTo(User::class)
}
再假设用户表有一个 浏览量
字段,那么我在分页查询所有文章列表时,如何通过 浏览量
排序?
1、第一种写法
Post::with(['user' => function ($query) {
$query->orderBy('浏览量', 'desc);
}])->paginate()
但是这种方法取出来的 Posts
并不是按照 浏览量 降序
排序的。
2、采用 Join
Post::select('posts.*')->join('users', 'users.id', '=', 'posts.user_id')->orderBy('user.浏览量', 'desc')->paginate();
这种方法可以,取出来的 posts
也是按照用户浏览量排序的,但是有点丑,但还有没有其他的排序方式呢?
推荐文章: