当使用Eloquent的where()
比较两个列的值时,似乎无法正常工作。如何解决?
示例代码:
->where('table_1.name', '=', 'table_2.name')
但适用于:
->where('table_1.name', '=', 'john')
在这种情况下,不需要转义,您可以使用 whereRaw()
:
->whereRaw('table_1.name = table_2.name')
您可以使用 where 子句指定列:
->whereColumn('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')