thinkphp6中用with一对多查询hasMany,如何排序?

2023-04-04 02:171684

在 thinkphp6 中,使用 with 方法进行一对多查询时,可以使用 order 方法进行排序。例如:

$user = UserModel::with(['posts' => function($query) {
        $query->order('create_time', 'desc');
    }])->find($user_id);

这里的 posts 是用户模型中定义的一对多关系方法,order 方法用于对该关系查询结果进行排序,按照 create_time 字段降序排序。

如果需要在关系方法中定义默认的排序方式,可以在关联方法中使用 order 方法进行排序,例如:

    class User extends Model
{
    public function posts()
    {
        return $this->hasMany(Post::class)->order('create_time', 'desc');
    }
}

这样,在使用 with 方法查询时,就不需要再次定义排序方式了:

$user = UserModel::with('posts')->find($user_id);


上一篇: 使用ThinkPHP6,查询数据库数据,并导出Excel表格文件,PhpOffice

下一篇: 使用ThinkPHP6写一个,可以随机生成20万中文昵称、时间戳、IP地址、姓名、身份证号码、手机号的程序,并且可以写入数据库