按相关表格列排序

时间:2015-07-22 18:27:23

标签: laravel laravel-4 laravel-5

我有一个类似的查询:

$users = User::with('role')
    ->get();

如何通过相关表格订购结果,如下所示:

$users = User::with('role')
    ->orderBy('role.id', 'DESC')
    ->get();

有没有办法在不加入role表的情况下执行此操作(因为我们已经在进行with('role')

3 个答案:

答案 0 :(得分:0)

来自documentation

root

您也可以使用DB :: raw进行原始查询,如示例here中所示。

答案 1 :(得分:0)

您可以随时轻松地对返回的集合进行排序......

$users = User::with('role')
    ->get()
    ->sortBy(function($user, $key)
    {
        return $user->role->id;
    });

这假设用户拥有一个或者属于一个角色。如果您的关系可以返回多个角色,那么它会变得有点复杂,因为您需要决定要排序的用户角色。

答案 2 :(得分:0)

你打算订购什么?用户列表或角色。 如果你试图根据角色do对用户进行排序。

$users = User::with('role')->orderBy('role_id', 'DESC')
    ->get();

如果您尝试对用户的角色进行排序,那么pocho的答案是正确的。

$users = User::with(array('role' => function($query)
{
    $query->orderBy('id', 'DESC');

}))->get();