2016-08-20 54 views
0

我有一個模型的函數:在Laravel使用別名查詢

public function getAll() 
    { 
     $allusers = DB::table('users')->join('countries', 'countries.id', '=', 'users.country_id')->get(); 
     return $allusers; 
    } 

這工作得很好,除了用戶的id是由這個國家的ID代替:

array(2) { [0]=> object(stdClass)#201 (20) { ["id"]=> int(42) ["name"]=> string(11) "Jim Elliott" ... and so on 

的ID應該是1,因爲country_id是42.

我應該爲國家ID添加別名嗎?還是我可以限制國家表的字段只是國家和國旗?

+1

你試過 '$ ALLUSERS = DB ::表(「用戶」) - >連接( (''countries','users.country_id','=','countries.id') - > get();' – vitr

+0

對不起,沒有什麼區別 – Jim

+0

正確定義你的關係,然後使用'return User :: with('國家');' –

回答

0
$users = DB::table('users')->join('countries', 'countries.id', '=', 'users.country_id') 
    ->select(DB::raw(
     "SELECT users.*,countries.*, users.id AS 'user_id', 
     countries.id AS 'country_id'" 
    ); 
+0

這不起作用,因爲我不斷收到語法錯誤。 – Jim

0

最後我欺騙了一個視圖,在這個視圖中我鏈接了兩個表格,並給了國家ID的別名。不是一個優雅的解決方案,但它的工作。我肯定有做它在Laravel沒有一個視圖以適當的方式,所以我的功能則成了:

$allusers = DB::table('v_users')->get(); 
return $allusers;