Ответ 1
В этом случае Escaping не нужно, вы можете использовать whereRaw()
:
->whereRaw('table_1.name = table_2.name')
Eloquent where()
кажется, не работает при сравнении двух значений столбца. Как это исправить?
Пример кода:
->where('table_1.name', '=', 'table_2.name')
Но работает над:
->where('table_1.name', '=', 'john')
В этом случае Escaping не нужно, вы можете использовать whereRaw()
:
->whereRaw('table_1.name = table_2.name')
Я понял это. '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')
Вы можете использовать столбец:
->whereColumn('table_1.name', 'table_2.name')