2016-03-15 5 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"}] 

Похоже, поскольку все три таблицы имеют столбец «имя», последний выбранный столбец перезаписывает те, которые перед ним. Очевидно, это не то, что я хочу.

Есть ли способ дать столбцу новое имя в построителе запросов аналогично AS в простой MySQL? Это даже решит мою проблему? Просьба привести пример с ответом. Я не эксперт по 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

Смежные вопросы