【发布时间】:2015-07-31 14:58:57
【问题描述】:
在比较两列值时,Eloquent 的 where() 似乎不起作用。如何解决?
示例代码:
->where('table_1.name', '=', 'table_2.name')
但适用于:
->where('table_1.name', '=', 'john')
【问题讨论】:
-
如果有帮助,您可以接受我的回答以供更多读者使用:)
在比较两列值时,Eloquent 的 where() 似乎不起作用。如何解决?
示例代码:
->where('table_1.name', '=', 'table_2.name')
但适用于:
->where('table_1.name', '=', 'john')
【问题讨论】:
这种情况下不需要转义,可以使用whereRaw():
->whereRaw('table_1.name = table_2.name')
【讨论】:
我想通了。 'table_2.name' 被解释为纯字符串,而不是 mysql 表列。
可能的解决方案:
用\DB::raw()包裹'table_2.name'
->where('table_1.name', '=', \DB::raw('table_2.name'))
用whereRaw() 包装整个表达式(基于@limonte 的回答)
->whereRaw('table_1.name = table_2.name')
【讨论】:
你可以使用 where 列:
->whereColumn('table_1.name', 'table_2.name')
【讨论】: