首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel 4数据库插入错误- preg_replace():参数不匹配,模式是字符串,而替换是数组

Laravel 4数据库插入错误- preg_replace():参数不匹配,模式是字符串,而替换是数组
EN

Stack Overflow用户
提问于 2015-10-26 06:15:08
回答 1查看 386关注 0票数 1

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

代码语言:javascript
运行
复制
$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():参数不匹配,模式是字符串,替换是数组

--这太奇怪了,因为我对另一张表做了同样的事情,它起作用了.

代码语言:javascript
运行
复制
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

                )
            )
        );

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-26 07:24:12

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

代码语言:javascript
运行
复制
$Pro1_id = DB::table('projects')->select('id')->where('projectName', '=', 'Project A')->get();

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

代码语言:javascript
运行
复制
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

想了解更多信息。查一下这个

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33339520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档