Laravel 4中的列不明确错误
Posted
技术标签:
【中文标题】Laravel 4中的列不明确错误【英文标题】:Column Ambiguous Error in Laravel 4 【发布时间】:2015-09-28 15:18:53 【问题描述】:我在 Laravel 4 中有一个查询。在列表中,我确实指定了“units.unit”,但我得到了列不明确的错误。
$unit = Unit::join('bookings','bookings.unit','=','units.unit')->where('bookings.id', '=', $id)->lists('units.unit', 'units.id');
SQLSTATE[23000]:完整性约束违规:1052 冠军:'unit' dans field list est ambigu (SQL: select
unit
,units
.id
fromunits
inner joinbookings
on @987654327 @.unit
=units
.unit
其中bookings
.id
= 22)
哪里出错了?
【问题讨论】:
【参考方案1】:显然,该库中存在错误。似乎它在将您的查询转换为本机 sql 时删除了表前缀“unit”。
select unit, ... //units.unit 和 bookings.unit 列之间有歧义
人们会期望它生成如下语句:
从...中选择units.unit、units.id
【讨论】:
【参考方案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');
【讨论】:
使用select()
真的是解决这个问题的唯一方法吗?
视情况而定,您可以使用->get(['name', 'username'])
。
我只是不想输入列名,但它确实有效。谢谢!以上是关于Laravel 4中的列不明确错误的主要内容,如果未能解决你的问题,请参考以下文章
当列不明确时,有啥方法可以强制 Mysql 在 where 子句中使用 select 中的列?