2016-03-15 49 views
1

我有三個表,這裏的相關列:加入三個表中Laravel有衝突的列名

events 
id 
name 
location_id 
org_id 

locations 
id 
name 

orgs 
id 
name 

這裏是我的控制器查詢生成器:

$events = DB::table('events') 
       ->join ('locations', 'events.location_id', '=', 'locations.id') 
       ->join('orgs', 'events.org_id', '=', 'orgs.id') 
       ->select('events.id', 'events.name', 'orgs.name', 'locations.name') 
       ->get(); 
    return response()->json($events); 

,輸出爲因此:

[{"id":"2","name":"HUB 123"}, {"id":"3","name":"HUB Lounge"}] 

當它應該是:

[{"id":"2","name":"Some cool event","org":"Student Senate","location":"HUB 123"}, {"id":"3","name":"Some other cool event","org":"Some club","location":"HUB Lounge"}] 

看起來,由於所有三個表都有一個「名稱」列,所以要選擇的最後一列將覆蓋前面的列。顯然這不是我想要的。

有沒有辦法在查詢生成器中爲列提供一個新名稱,類似於普通MySQL中的AS?這是否會解決我的問題?請以您的答案爲例。我不是MySQL專家,我是Laravel的初學者。我只是試圖建立一個基本的API用於我的實際項目。

謝謝!

回答

1

別名列

$events = DB::table('events') 
      ->join ('locations', 'events.location_id', '=', 'locations.id') 
      ->join('orgs', 'events.org_id', '=', 'orgs.id') 
      ->select('events.id', 'events.name as event_name', 'orgs.name as org', 'locations.name as location') 
      ->get(); 
return response()->json($events); 
+0

謝謝!我知道這會讓事情變得很簡單。我必須等待8分鐘才能接受這個答案,因爲你的回答太快:) –

+0

不客氣。 – oseintow