2016-04-28 7 views
1

をDBへ挿入し、Laravel 5.1は、複数の入力値を取得し、私はそのフォームからのすべての入力値を取得したい私はstackoverflowの中<code>tags</code>入力フォームのように複数の値を持つことができ<code>category</code>という名前の入力フォームは、あなたが質問<br> を求めてきたときに

foreach ($category as $category) { 
    DB::insert('INSERT INTO category_service (category_id, service_id) VALUES (?,?)', array('$category', $service->id)); 
} 

テーブルは次のようになります。試してみるには、このコードを使用してそれを挿入するとき、私は私がInvalid argument supplied for foreach()エラーを取得
そして配列値を取得するために$category = implode(",", Input::get('category'));を使用
category_serviceピボットテーブルにそれを挿入します。

category_table 
+----+--------------+ 
| id | category | 
+----+--------------+ 
| 1 | category_1 | 
| 2 | category_2 | 
+----+--------------+ 

service_table 
+----+--------------+ 
| id | service | 
+----+--------------+ 
| 1 | service_1 | 
+----+--------------+ 

category_service_table //pivot table to store category id and service id 
+----+--------------+-------------+ 
| id | category_id | service_id | 
+----+--------------+-------------+ 
| 1 |  1  |  1  | 
| 2 |  2  |  1  | 
+----+--------------+-------------+ 

var_dump結果はPHP implode機能あなたは文字列に配列を結合し、その結果Invalid argument supplied for foreach()エラーとして、foreachのために文字列を渡すとstring(3) "2,1"

+0

を試してみてください。また 'Category'ダンプをあなたの質問に追加します。 – Qazi

答えて

1

$category = implode(",", Input::get('category'));

破は、アレイ

から文字列を作るあなたの質問についていくつかの詳細を記入してください

$category = Input::get('category'); if (!empty($category) && is_array($category)) { foreach ($category as $val) { DB::insert('INSERT INTO category_service (category_id, service_id) VALUES (?,?)', array((int) $val, $service->id)); } }

+0

これは今働きました – Spadaboyz

0

です。 explodeと混同していますか?公式の文書を参照してください。 ImplodeおよびExplode。また、foreachには、foreach ($categories as $category)のように複数形や単数形の名前を使用する方がよいでしょう。

そしてLaravel挿入用:

DB::table('category_service')->insert(
    ['category_id' => $category, 'service_id' => $service->id] 
); 

はまた、あなたが実行されません、それは文字列として渡します単一引用符と変数に$categoryを置きます。

また、$service->idになりましたか?

+0

別のdbクエリーから' $ service-> id'値を得ました – Spadaboyz

関連する問題