使用Eloquent ORM将数据数组存储到数据库中

时间:2014-07-13 00:25:58

标签: php database checkbox laravel laravel-4

我在将数据数组存储到数据库的多行时遇到了问题。

在我的表单(assign.blade.php)中,我有多个复选框,用户可以选择多个复选框。

<input type="checkbox" name="adminbox[]" value='{{ $value->id }}'>

在我的控制器(SchoolController.php)中,我有这段代码:

public function assignadmin()
{
   $adminbox = implode(",", Input::get('adminbox'));
   for($a=0;$a<count($adminbox);$a++)
   {        
     $AC = new AccessControlEntry;
     $AC->ProfileID=$adminbox[$a];
     $AC->save();
   } 
return Redirect::to('school/view');
}

我认为循环应该通过数组并将数组中的每个数据存储到数据库中的多行中。但是,我得到了这个错误:

  

SQLSTATE [23000]:完整性约束违规:1062密钥'PRIMARY'的重复条目''(SQL:插入accesscontrolsProfileID)值(U))

例如,如果数组中有3个数据,则应将它们存储到数据库中的3个不同的行中。 任何人都可以协助我实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

试试这个:

$adminbox = Input::get('adminbox');

而不是:

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

因为$adminbox将是一系列已检查的checkbox值,例如:

// dd($adminbox);
array (size=2)
  0 => string '1' (length=1) // For value = 1
  1 => string '2' (length=1) // For value = 2

在操作之前,请确保您有checked个复选框,例如:

$adminbox = Input::get('adminbox');
if($adminbox) {
    // rest of the code
}