Laravel sort没有任何影响

时间:2017-08-01 14:30:50

标签: laravel eloquent

我的用户模型上有一个自定义属性,它会计算其他一些表的长度并返回一个整数值:

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;
}

问题是返回的数据不会改变顺序。没有错误,每次只是用户的相同顺序。

我有什么遗失的吗?

1 个答案:

答案 0 :(得分:0)

sortBy函数不会被orderBy函数弄错,第一个函数对集合进行排序,第二个函数改变查询构建器的sql。

为了能够使用sortBy函数,首先需要检索集合。仍然可以使用以下方式链接这些函数:

return $team->users()->sortBy('currentQueueLength');

如果您愿意为排序编写自定义SQL查询,也可以使用orderByRaw