Laravel 4/5,由外国专栏订购

时间:2014-11-23 15:57:32

标签: laravel eloquent query-builder

在Laravel 4/5中,如何根据关系连接到此表的字段中对表结果进行排序?

我的情况:

我的users仅存储e-mailpassword字段。但我有另一个名为details的表,用于存储namebirthday等...

如何通过users获取details.name表格结果排序?

P.S。:由于用户是一个拥有许多其他关系且有很多项目的中心表,我不能像Details::...那样进行反向搜索

1 个答案:

答案 0 :(得分:2)

我建议使用加入。 (模型应以单数形式命名;用户;详细信息)

$users = User::join('details', 'users.id', '=', 'details.user_id')  //'details' and 'users' is the table name; not the model name
    ->orderBy('details.name', 'asc')
    ->get();

如果您多次使用此查询,则可以将其保存在模型的范围内。

class User extends \Eloquent {
    public function scopeUserDetails($query) {
        return $query->join('details', 'users.id', '=', 'details.user_id')
    }
}

然后从您的控制器调用查询。

$users = User::userDetails()->orderBy('details.name', 'asc')->get();