when($search['name'] ?? false, function ($query) use ($search){ $query->whereLike('name', $search['name']); }) ->when($search['id'] ?? false, function ($query) use ($search){ $query->where('parent_id', $search['id']) ->whereOr('id', $search['id']); }) ->when($search['permission_ids'] ?? false, function ($query) use ($search){ $query->whereIn('id', $search['permission_ids']); }) ->order('sort', 'desc') ->order('id', 'desc') ->select() ->toArray(); } public function roles(): \think\model\relation\BelongsToMany { return $this->belongsToMany(Roles::class, 'role_has_permissions', 'role_id', 'permission_id'); } }