【问题标题】:Storing array of data into multiple rows to database using Eloquent ORM使用 Eloquent ORM 将数据数组存储到多行到数据库中
【发布时间】:2014-09-03 07:18:52
【问题描述】:

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

在我的表单 (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:插入到 accesscontrols (ProfileID) 值 (U))

例如,如果一个数组中有 3 个数据,它们应该存储到数据库中的 3 个不同的行中。 谁能帮助我实现这一目标?

【问题讨论】:

    标签: php database checkbox laravel laravel-4


    【解决方案1】:

    试试这个:

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

    【讨论】:

    • 好的,我已经按照您所说的进行了以下更改。似乎循环没有遍历数组中的数据并将它们存储到多行中。相反,我收到一个错误:SQLSTATE[23000]:完整性约束违规:1062 Duplicate entry '' for key 'PRIMARY' (SQL: insert into accesscontrols (ProfileID) values (U10))
    猜你喜欢
    • 2014-08-08
    • 1970-01-01
    • 1970-01-01
    • 2019-04-07
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    • 2021-12-15
    • 2011-07-19
    相关资源
    最近更新 更多