【问题标题】:Laravel 4 Database insert Error - preg_replace(): Parameter mismatch, pattern is a string while replacement is an arrayLaravel 4数据库插入错误-preg_replace():参数不匹配,模式是字符串,而替换是数组
【发布时间】:2016-01-25 04:26:00
【问题描述】:

在数据库播种器中,我只想向表中插入一些硬编码的数据。

$Pro1_id = DB::table('projects')->select('id')->where('projectName', '=', 'Project A')->get();
    $data1_1 = array(
            'id'                =>      1,
            'projectID'         =>      $Pro1_id,
            'attributeID'       =>      1,
            'levelID'           =>      2,
            'percentage'        =>      20,
            'risk_value'        =>      25186.86311,
            'expectation_value' =>      706455.9401,
        );
    $data1_2 = array(
            'projectID'         =>      $Pro1_id,
            'attributeID'       =>      2,
            'levelID'           =>      1,
            'percentage'        =>      60,
            'risk_value'        =>      530351.3397,
            'expectation_value' =>      392207.1248,
        );
    $data1 = [$data1_1, $data1_2];
    DB::table('Mapping')->insert($data1);

但是,我得到了错误:

[ErrorException] preg_replace(): 参数不匹配,模式是 字符串,而替换是一个数组

太奇怪了,因为我对另一张桌子做了同样的事情,它起作用了。

DB::table('projects')->insert(array(
                array(
                    'id'            =>  Webpatser\Uuid\Uuid::generate(),
                    'projectName'   =>  'Project A',
                    'creator_id'    =>  $pro1_creatorID,
                    'create_at'     =>  \Carbon\Carbon::now()->toDateString(),
                    'lastEditor_id' =>  $pro1_creatorID,
                    'edit_at'       =>  \Carbon\Carbon::now()->toDateString(),
                    'utility'       =>  1.597119661,
                    'exponential'   =>  4.94,
                    'projectValue'  =>  1225090.39
                ),
                array(
                    'id'              =>  Webpatser\Uuid\Uuid::generate(),
                    'projectName'   =>  'Project B',
                    'creator_id'    =>  $pro2_creatorID,
                    'create_at'     =>  \Carbon\Carbon::create(2014, 12, 12)->toDateString(),
                    'lastEditor_id' =>  $pro2_creatorID,
                    'edit_at'       =>  \Carbon\Carbon::create(2014, 12, 12)->toDateString(),
                    'utility'       =>  1.754989409,
                    'exponential'   =>  5.78,
                    'projectValue'  =>  293760.36
                ),
                array(
                    'id'              =>  Webpatser\Uuid\Uuid::generate(),
                    'projectName'   =>  'Project C',
                    'creator_id'    =>  $pro3_creatorID,
                    'create_at'     =>  \Carbon\Carbon::create(2013, 10, 21)->toDateString(),
                    'lastEditor_id' =>  $pro3_creatorID,
                    'edit_at'       =>  \Carbon\Carbon::create(2013, 10, 21)->toDateString(),
                    'utility'       =>  1.423114267,
                    'exponential'   =>  4.15,
                    'projectValue'  =>  1461924.67

                )
            )
        );

我真的不明白为什么插入到项目表中,但映射表之一不起作用。 它们是完全相同的方法。

【问题讨论】:

    标签: laravel-4 insert laravel-seeding


    【解决方案1】:

    我认为你的代码是正确的,但是当你在数组中插入 id 时,你做错了。

    $Pro1_id = DB::table('projects')->select('id')->where('projectName', '=', 'Project A')->get();
    

    这里,$Pro1_idCollection,其中包含从您的查询返回的值。有时可能是 1,但有时可能是 2 或 3....所以,当您在数组中插入 id 时,您的做法是错误的。所以,像这样使用foreach 循环:

    foreach($Pro1_id as $pro){
        DB::table('Mapping')->insert(array(
                'id'                =>      1,
                'projectID'         =>      $pro->id,
                'attributeID'       =>      1,
                'levelID'           =>      2,
                'percentage'        =>      20,
                'risk_value'        =>      25186.86311,
                'expectation_value' =>      706455.9401,
            ));
    }
    

    对于简单的,get 返回Collection 并且应该获取多个rows

    更多信息。 Check this

    【讨论】:

    • 您好,非常感谢您的回答!你拯救了我的一天~
    猜你喜欢
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 2015-06-19
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多