Laravel Eloquent比较列值

时间:2015-05-19 16:41:07

标签: laravel eloquent

在比较两个列值时,Eloquent的where()似乎无法正常工作。如何解决?

示例代码:

->where('table_1.name', '=', 'table_2.name')

但是可以继续:

->where('table_1.name', '=', 'john')

3 个答案:

答案 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表列。

可能的解决方案:

  1. 使用'table_2.name'

    包裹\DB::raw()
    ->where('table_1.name', '=', \DB::raw('table_2.name'))
    
  2. whereRaw()包裹整个表达式(基于@ limonte的回答)

    ->whereRaw('table_1.name = table_2.name')