2017-07-06 2 views
1

Ich habe Probleme mit der Verwendung eines Parameters in einer DB-Abfrage und Parameterbindung in Laravel.

ich diesen Fehler:

Error: "Column not found: 1054 Unknown column '3' in 'on clause'" 

Dies ist der Teil einer Abfrage:

->join('foo AS f1', function($join) use ($bar) 
     { 
      $join->on('f1.foo', '=', 'f2.foo') 
       ->on('f1.bar', '=', $bar); 
     }) 

Wenn ich diese stattdessen tun, es funktioniert:

->on('f1.bar', '=', DB::raw($bar)); 

Was ist die Lösung dazu? Ich möchte natürlich auch hier die Parameterbindung verwenden. Allerdings, wenn ich tun:

->on('f1.bar', '=', ':bar', ['bar' => $bar]); 

ich dieses:

ErrorException in Grammar.php line 196: 
Array to string conversion 
+0

Sind Sie sicher, dass das Problem nur Snippet ist? – Chintan7027

+0

Ja, ich habe die Antwort bekommen. Nur die Parameterbindung funktioniert immer noch nicht. – Hillcow

Antwort

1

, wenn Sie zwei Tabellen mit verbinden Verbinden Sie die Spaltennamen ($ bar muss gleich zu Spaltenname string) angeben müssen. Wenn Sie also einige Parameterdaten senden möchten, müssen Sie stattdessen whereon verwenden.

->join('foo AS f1', function($join) use ($bar) 
     { 
      $join->on('f1.foo', '=', 'f2.foo') 
       ->where('f1.bar', '=', $bar); 
     }) 
+0

ah ja sicher, danke! Trotzdem wird die String-Konvertierung des Arrays für die Parameterbindung ausgeführt. – Hillcow

Verwandte Themen