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