2014-11-23 69 views
0

在Laravel 4/5中,如何在基于关系连接到该表的字段中排序表结果?Laravel 4/5,国外订单

我的情况:

我有users,只有存储e-mailpassword领域。但是我有一个叫details另一个表存储的namebirthday,等...

我怎样才能获得通过details.nameusers表结果排序?

P.S:由于用户是有其他国家的关系,并有许多项目的中央台,我不能只是做一个反向搜索像Details::...

+0

您是否在使用Eloquent?当前获取记录的请求是什么样的? – 2014-11-23 17:29:25

+1

你必须“加入”细节表,没有别的办法。 – 2014-11-23 19:09:00

回答

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(); 
+0

感谢您的答案,但我已经使用这种方式,这是非常糟糕的,因为可以在订购具有相同名称,如id等列时发生冲突。我正在寻找更多的“ORM”方式.. – insign 2014-11-26 02:17:27