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 from units inner join bookings 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中的列不明确错误的主要内容,如果未能解决你的问题,请参考以下文章

where 子句中的列不明确 - 这是啥意思?

如何解决 laravel 中不明确的列问题?

当列不明确时,有啥方法可以强制 Mysql 在 where 子句中使用 select 中的列?

从预先加载的 laravel 集合中加载特定的列

存储As()在Laravel中生成的列(MySQL)中的错误

仅从 Laravel 5.2 关系查询中选择特定列不起作用 [重复]