Красноречиво "S where()
изглежда не работи при сравняване на две стойности на колона. Как да го поправим?
Примерни код:
->where("table_1.name", "=", "table_2.name")
Но работи върху:
->where("table_1.name", "=", "john")
Отговори:
33 за отговор № 1Бягството в този случай не е необходимо, можете да използвате whereRaw()
:
->whereRaw("table_1.name = table_2.name")
14 за отговор № 2
Можете да използвате където колоната:
->whereColumn("table_1.name", "table_2.name")
11 за отговор № 3
Разбрах го. "table_2.name"
се интерпретира като обикновен низ и не е колона на mysql таблица.
Възможни решения:
Wrap
"table_2.name"
сDB::raw()
->where("table_1.name", "=", DB::raw("table_2.name"))
Увийте целия израз с
whereRaw()
(въз основа на отговора на @limonte)->whereRaw("table_1.name = table_2.name")