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


Storing array of data into multiple rows to database using Eloquent ORM

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

在我的表单(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]: Integrity constraint violation: 1062 (SQL: insert into accesscontrols (ProfileID) values (U))

例如,如果一个数组中有3个数据,它们应该存储在数据库中的3个不同的行中。有人能帮我实现这个吗?

试试这个:

$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
}