2017-07-06 11 views
1

LaravelのDBクエリとパラメータバインディングでパラメータを使用する際に問題があります。

私はこのエラーを取得する:

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

これは、クエリの一部です:

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

私が代わりにこれを行う場合は、それが動作:

ソリューション何
->on('f1.bar', '=', DB::raw($bar)); 

これに?もちろん、このためにパラメータバインディングを使用したいと思います。しかし、私が行うとき:

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

私はこれを取得:

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

問題がスニペットであることを確認してください。 – Chintan7027

+0

はい、私は答えを得ました。パラメータバインディングだけがまだ動作していません。 – Hillcow

答えて

1

あなたが持つ2つのテーブルを接続する列名を($バーは、列名の文字列と同じでなければなりません)を指定する必要があります参加します。したがって、いくつかのパラメータデータを送信する場合は、代わりにwhereonを使用する必要があります。

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

ああ、確かに、ありがとう!しかし、パラメータバインディングのための文字列変換への配列を取得します。 – Hillcow

関連する問題