我的用户模型上有一个自定义属性,它会计算其他一些表的长度并返回一个整数值:
public function GetCurrentQueueLengthAttribute()
{
// return int
}
然后我有一个API端点返回"团队"与其所有用户(简单的Spark枢轴)
public function show($teamId)
{
$query = Team::query();
$query->with('users')->where('id', $teamId);
$team = $query->first();
return $team->users->sortBy('currentQueueLength');
return $team;
}
问题是返回的数据不会改变顺序。没有错误,每次只是用户的相同顺序。
我有什么遗失的吗?
答案 0 :(得分:0)
sortBy
函数不会被orderBy
函数弄错,第一个函数对集合进行排序,第二个函数改变查询构建器的sql。
为了能够使用sortBy
函数,首先需要检索集合。仍然可以使用以下方式链接这些函数:
return $team->users()->sortBy('currentQueueLength');
如果您愿意为排序编写自定义SQL查询,也可以使用orderByRaw
。