Laravel Eloquent Comparer Les Valeurs Des Colonnes

Éloquent where() semble ne pas fonctionner lorsque l'on compare deux valeurs de colonne. Comment résoudre ce problème?

exemple de code:

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

Mais fonctionne sur:

->where('table_1.name', '=', 'john')
19
demandé sur Jake Opena 2015-05-19 19:41:07

3 réponses

Échappement est inutile dans ce cas, vous pouvez utiliser whereRaw():

->whereRaw('table_1.name = table_2.name')
34
répondu Limon Monte 2015-05-19 16:44:37

Vous pouvez utiliser la colonne where:

->whereColumn('table_1.name', 'table_2.name')
18
répondu Carolyn Lim 2016-08-15 03:50:17

j'ai pensé à elle. 'table_2.name' est interprété comme une chaîne simple et non une colonne de table mysql.

solutions possibles:

  1. Wrap 'table_2.name'\DB::raw()

    ->where('table_1.name', '=', \DB::raw('table_2.name'))
    
  2. envelopper toute l'expression avec whereRaw() (d'après la réponse de @limonte)

    ->whereRaw('table_1.name = table_2.name')
    
11
répondu Jake Opena 2015-05-19 16:54:21