在Laravel 4/5中,如何根据关系连接到此表的字段中对表结果进行排序?
我的情况:
我的users
仅存储e-mail
和password
字段。但我有另一个名为details
的表,用于存储name
,birthday
等...
如何通过users
获取details.name
表格结果排序?
P.S。:由于用户是一个拥有许多其他关系且有很多项目的中心表,我不能像Details::...
那样进行反向搜索
答案 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();