1

データベース シーダーでは、ハードコードされたデータをテーブルに挿入したいだけです。

$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

                )
            )
        );

プロジェクト テーブルへの挿入が機能する理由が本当にわかりませんが、マッピング テーブルの 1 つが機能しません。それらはまったく同じ方法です。

4

1 に答える 1

2

あなたのコードは正しいと思いますが、配列に 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,
        ));
}

simple の場合は、 returnであり、むしろ複数の をフェッチすることになっていgetます。Collectionrows

詳しくは . これをチェックして

于 2015-10-26T07:24:12.473 に答える