2016-04-28 141 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