2015-07-10 55 views
2

我在Laravel 4下面有一個查詢。在列表中,我確實指定了'units.unit',但是我得到了列模糊錯誤。列在Laravel 4中的模糊錯誤

$unit = Unit::join('bookings','bookings.unit','=','units.unit')->where('bookings.id', '=', $id)->lists('units.unit', 'units.id'); 

SQLSTATE [23000]:完整性約束違規:1052冠軍: '單元' 丹斯字段列表EST ambigu(SQL:選擇unitunitsidunits內上bookings加入bookingsunit = unitsunit其中bookingsid = 22)

哪裏出錯?

回答

2

你可以試試這個:

$unit = Unit::join('bookings', 'bookings.unit', '=', 'units.unit') 
      ->where('bookings.id', $id) 
      ->select(
       'units.id', 
       'units.unit', 
       'bookings.id as bid', 
       'bookings.unit as bunit' 
      ) 
      ->lists('units.unit', 'units.id'); 
+0

使用'選擇()'真正解決這個唯一的方法? – IIllIIll

+0

這取決於你可以使用' - > get(['name','username'])'。 –

+1

我只是不想輸入列名,但它絕對有效。謝謝! – IIllIIll

0

顯然,該庫存在bug。它似乎刪除了表前綴'單元',同時將您的查詢翻譯爲原生sql。

選擇單元,... //歧義是units.unit和bookings.unit列之間

一個希望它如下生成聲明:

選擇units.unit,units.id從...