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:
Wrap
'table_2.name'
\DB::raw()
->where('table_1.name', '=', \DB::raw('table_2.name'))
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