2014-11-23 68 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