2014-09-16 2 views
2

Я в настоящее время использую этот код, чтобы получить необходимые данные из моей базы данныхLaravel 4 - JOIN - То же имя столбца

$query = DB::table('packages') 
     ->join('assigned_packages', function($join) use($id) 
     { 
      $join->on('packages.id', '=', 'assigned_packages.registered_package_id') 
       ->where('assigned_packages.customer_id', '=', $id); 
     }) 
     ->join('registered_packages', function($join) 
     { 
      $join->on('packages.id', '=', 'registered_packages.id') 
       ->on('registered_packages.id', '=', 'assigned_packages.registered_package_id'); 
     }); 

Он отлично работает, однако проблема заключается в том, что эти таблицы имеют столбцы с одинаковыми именами, и в результате получается только последний. Как я могу это исправить? Обычно я бы использовал параметр as в запросе, но я честно не знаю, как я могу добавить его в мой текущий код JOIN сверху.

ответ

4
$query = DB::table('packages') 
->join(...) 
->join(...) 
->select(DB::raw('packages.name as name1, assigned_packages.name as name2')) 
->get(); 

редактировать:

$sql = "select a.name as name1, b.name as name2"; 
$sql .= " from a left join b on a.id=b.id1 and b.id2=&id"; 
$result = DB::select($sql); 
+1

Это приведет к объекту, который будет включать в себя только результат выбора queryy (DB :: сырец), но не результатом выше объединений :( – Michael

+0

@Michael Можете ли вы вставить последний SQL-запрос, который вы хотите? – worldask

+0

Что вы имеете в виду? Я опубликовал свой запрос на соединение в вопросе. Единственная проблема заключается в том, что в столбце есть столбцы с одинаковым именем в обеих таблицах, и поэтому я должен указать имя для них. Поэтому ваш -> select работает, но не сохраняет данные из соединения. – Michael

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