我在Laravel 4中有一个查询在列表中,我确实指定了'units.unit',但是我遇到了列模糊错误。
$unit = Unit::join('bookings','bookings.unit','=','units.unit')->where('bookings.id', '=', $id)->lists('units.unit', 'units.id');
SQLSTATE [23000]:完整性约束违规:1052 Champ:'unit'dans字段列表est ambigu(SQL:从
unit
选择units
,id
。units
内部联接bookings
位于bookings
。unit
=units
。unit
其中bookings
。id
= 22)
哪里出错?
答案 0 :(得分: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');
答案 1 :(得分:0)
显然,该库中存在错误。它似乎在将查询转换为本机sql时删除了表前缀'unit'。
select unit,... // ambiguity介于units.unit和bookings.unit列
之间人们会期望它生成如下声明:
从...中选择units.unit,units.id