我有下表,
user_category(ID,user_id,category_id)
特色(id,spe_name)
我正在尝试按表中“用户”的每个用户在表“ user_category”中的类别下的所有类别来获取所有具有所有相关专业的用户。
我尝试使用'with'关系,但无法在此查询上排序。
有什么想法我可能做错了吗?
答案 0 :(得分:0)
With()
使用sql运算符进行多个查询,其中我认为,因此,当您尝试对它排序时,该字段不可用。
有两种解决方法,
要么join()
将表放在一起,然后在连接的字段上orderBy
,要么对查询结果进行如下排序
$sortedResult = SomeModel::with('all your relations')->get()
->sortByDesc(function ($anItem) {
return $anItem->category->order;
})->all();
如果您想加入,请参阅另一篇文章:Sort collection by relationship value
根据评论进行编辑
User::join('user_category', 'user_category.user_id', '=', 'user.id')
->join('user_specialities', 'user_specialities.user_id', '=', 'user.id')
->select('user.*')
->selectRaw('(select group_concat(spe_name) from specialities where specialities.id = user_specialiliteies.spe_id) as specialities')
->orderBy('user_category.order')
->get();