cccicl
cccicl
发布于 3个月前

ThinkPHP 多对多关联模型排序查询,要怎么设置排序字段?

有用户表 user 和 角色表role及关联表user_role,两者为多对多关系,那么如何通过关联表中字段(如:id)来进行排序呢?

因为解析成 sql 语句时,关联表都被重命名为pivot,所以只需要在模型中关系定义时加上 ->order('pivot.id') 即可,代码如下:

<?php
namespace app\admin\model;
use think\Model;

class User extends Model
{
    protected $name = 'user';

    public function roles()
    {
        return $this->belongsToMany('Role','user_role','role_id','user_id')->order('pivot.id');
    }
}