在比较两个列值时,Eloquent的where()
似乎无法正常工作。如何解决?
示例代码:
->where('table_1.name', '=', 'table_2.name')
但是可以继续:
->where('table_1.name', '=', 'john')
答案 0 :(得分:41)
在这种情况下不需要转义,您可以使用whereRaw()
:
->whereRaw('table_1.name = table_2.name')
答案 1 :(得分:23)
您可以使用where列:
->whereColumn('table_1.name', 'table_2.name')
答案 2 :(得分:11)
我明白了。 'table_2.name'
被解释为纯字符串而不是mysql表列。
可能的解决方案:
使用'table_2.name'
\DB::raw()
->where('table_1.name', '=', \DB::raw('table_2.name'))
用whereRaw()
包裹整个表达式(基于@ limonte的回答)
->whereRaw('table_1.name = table_2.name')