thinkphp6中用with一对多查询hasMany,如何排序?
2023-04-04 02:173010
在 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地址、姓名、身份证号码、手机号的程序,并且可以写入数据库