首页 > 解决方案 > 带有 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';

标签: phpmysqllaraveleloquent

解决方案


您可以按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();

推荐阅读