2016-04-28 158 views
1

我都當你問一個名爲category的輸入形式,可以有多個值,就像在計算器tags輸入表單中的問題
我想從表單中的所有輸入值和將其插入到category_service透視表
我用$category = implode(",", Input::get('category'));得到數組值
然後我得到Invalid argument supplied for foreach()錯誤時嘗試使用此代碼插入:Laravel 5.1檢索多個輸入值,並插入到數據庫

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

表如下所示:

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結果是string(3) "2,1"

+0

請提供關於你的問題的更多細節。另外添加'類別'轉儲到您的問題, – 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

得到'$ service-> id'值,謝謝,它現在的作品 – Spadaboyz

0

使用PHP implode功能你接合陣列串並傳遞字符串FOREACH,結果Invalid argument supplied for foreach()錯誤。你與explode混淆?查看官方文檔。 ImplodeExplode。另外,最好在foreach中使用複數和單數命名,如foreach ($categories as $category)

而對於Laravel插入使用:

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

而且,你把$category在一個單引號和可變不會執行,它將作爲一個字符串傳遞。

另外,您是否獲得$service->id

+0

我從另一個數據庫查詢 – Spadaboyz