SQLSTATE [23000]:完整性约束违规:1052 列“created_at”在 order 子句中不明确 Laravel 5.5
Posted
技术标签:
【中文标题】SQLSTATE [23000]:完整性约束违规:1052 列“created_at”在 order 子句中不明确 Laravel 5.5【英文标题】:SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'created_at' in order clause is ambiguous Laravel 5.5 【发布时间】:2019-02-22 13:08:43 【问题描述】:我只是不知道我的代码有什么问题以及为什么会产生这个错误
SQLSTATE[23000]:完整性约束违规:1052 列“created_at”在 order 子句中不明确(SQL:select * from
processes
inner joinbags
onprocesses
.bag_id
=bags
.@ 987654327@ wherebags
.type
= Recyclable and date(processes
.created_at
) = 2018-09-18 00:00:00 order bycreated_at
desc limit 1) 这是我的代码
$bag = Bagcollect::join('bags', 'bagcollects.bag_id', '=', 'bags.id')
->select('bags.type')
->where('bagcollects.bag_id', $request->input('bag_id'))
->first();
//this query produce error
$processexist = Process::join('bags', 'processes.bag_id', '=', 'bags.id')
->where('bags.type', $bag->type)
->whereDate('processes.created_at', Carbon::today())
->latest()
->first();
【问题讨论】:
您已在多个表中创建了_at 列(此处正在加入这些表)。您需要指定特定的别名/表名才能使用特定的 created_at 列进行排序 Codeigniter: Column 'id' in order clause is ambiguous的可能重复 歧义列错误只能指向SELECT
、WHERE
、ON
(加入时)、HAVING
、GROUP BY
子句添加到@MadhurBhaiya 的评论
【参考方案1】:
您需要在latest()
中指定完整列。 latest('process.created_at')
或使用自定义 orderBy 代替 latest()
。
【讨论】:
知道了!谢谢!【参考方案2】:那是因为您正在从两个表中查询“created_at”列。您必须指定所需的列,例如:
$processexist = Process::join('bags', 'processes.bag_id', '=', 'bags.id')
->select('bags.column1', 'bags.columns2')
->where('bags.type', $bag->type)
->whereDate('processes.created_at', Carbon::today())
->latest()
->first();
【讨论】:
以上是关于SQLSTATE [23000]:完整性约束违规:1052 列“created_at”在 order 子句中不明确 Laravel 5.5的主要内容,如果未能解决你的问题,请参考以下文章
SQLSTATE[23000]:完整性约束违规 1452 无法添加或更新子行:外键约束失败
Innobyte 插件问题:SQLSTATE [23000]:完整性约束违规:1452 无法添加或更新子行
SQLSTATE [23000]:完整性约束违规:1452 无法添加或更新子行:外键约束失败
Laravel:正确保存后返回重定向抛出 SQLSTATE [23000]:完整性约束违规
SQLSTATE [23000]:完整性约束违规:1452 无法添加或更新子行:外键约束失败 - Laravel
Laravel 7 错误 - SQLSTATE [23000]:完整性约束违规:1048 列 'first_name' 不能为空