/ / Laravel Красноречив Сравнете стойностите на колоните - laravel, красноречив

Ларавел Елокуент сравнява стойностите на колоните - ларавел, красноречив

Красноречиво "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 таблица.

Възможни решения:

  1. Wrap "table_2.name"с DB::raw()

    ->where("table_1.name", "=", DB::raw("table_2.name"))
    
  2. Увийте целия израз с whereRaw() (въз основа на отговора на @limonte)

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