where()当比较两个列值时,Eloquent 似乎不起作用.怎么解决?
示例代码:
->where('table_1.name', '=', 'table_2.name')
Run Code Online (Sandbox Code Playgroud)
但是工作:
->where('table_1.name', '=', 'john')
Run Code Online (Sandbox Code Playgroud)
Lim*_*nte 50
在这种情况下不需要转义,您可以使用whereRaw():
->whereRaw('table_1.name = table_2.name')
Run Code Online (Sandbox Code Playgroud)
小智 33
您可以使用where列:
->whereColumn('table_1.name', 'table_2.name')
Run Code Online (Sandbox Code Playgroud)
Jak*_*ena 11
我想到了.'table_2.name'被解释为纯字符串而不是mysql表列.
可能的解决方案:
包裹'table_2.name'着\DB::raw()
->where('table_1.name', '=', \DB::raw('table_2.name'))
Run Code Online (Sandbox Code Playgroud)用whereRaw()(基于@ limonte的答案)包装整个表达式
->whereRaw('table_1.name = table_2.name')
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
21462 次 |
| 最近记录: |