php - 带有 where 条件的 Laravel 连接查询将比较值读取为字符串而不是字段值
问题描述
尝试使用 where 语句来比较 laravel 上 2 个字段的值,但是 laravel 将 ('tickets.status','=','ticket_orders.status') 中的 "ticket_orders.status" 视为字符串。但是在 SQL 查询中,有人可以告诉我我的语法有什么问题吗?
$relevant_audit_tickets = TicketOrder::join('tickets','tickets.ticket_order_id','=','ticket_orders.id')->where('tickets.status','=','ticket_orders.status')->where('tickets.status','=','Created')->get();
SELECT * FROM ticket_orders tos inner join tickets t on t.ticket_order_id = tos.id where tos.status = t.status and tos.status = 'created';
解决方案
您可以按whereRaw()
或按列比较whereColumn()
->whereRaw('tickets.status = ticket_orders.status')
或者
->whereColumn('tickets.status', 'ticket_orders.status')
询问:
$relevant_audit_tickets = TicketOrder::join('tickets','tickets.ticket_order_id','=','ticket_orders.id')
->whereRaw('tickets.status = ticket_orders.status') // OR ->whereColumn('tickets.status', 'ticket_orders.status')
->where('tickets.status','=','Created')
->get();
推荐阅读
- python - 是否可以使用 Cerberus 验证 yaml 文件的键名和字典名称?
- ruby - 需要一些帮助遍历数组并进行有条件的更改
- java - 如何在android中制作回调链
- python - 尝试使用 Image.save() 保存图像时出错
- sql - SQL:如何只选择最旧的记录
- java - Eclipse 的 Content Assist 不适用于 java.util.Comparator
- javascript - 附加条不会在 svg 元素上绘制
- java - 不兼容的类型:View 无法转换为 LinearLayout
- perl - 在 perl 中立即调用函数表达式 (IIFE) 的最佳方法?
- ios - iOS AutoFill 功能:有没有办法拦截 AutoFill 事件?