Laravel4、シーディングと複数行インサート

Tags : Laravel4  

チュートリアルでは、Eloquentの使い方を覚えてもらうため、レコードをただ登録する場合も、一件ずつcreateメソッドで追加しました。

しかし、リレーションを使わない、通常のインサートなら、クエリービルダーで一発挿入しましょう。発行されるSQLも一つで済みますので、高速化されます。

DB::table( 'roles' )->delete();

$roles = array(
            array( 'rolename' => 'super'),
            array( 'rolename' => 'システム管理者'),
            array('rolename' => 'モデレーター'),
            array('rolename' => '一般ユーザー'),
            array( 'rolename' => 'ban'),
        );

DB::table('roles')->insert( $roles );

ネストした配列に、挿入するデーターを用意しておき、insertメソッドに渡して、一度に挿入できます。

ただし、先のチュートリアルではユーザーのパスワードは、Elqoeuntのセッター機能で自動的にハッシュにしました。クエリービルダーの場合は、当然自動変換されませんので、自分で指定する必要があります。

array(
   array( 
       'username'=>'myName', 
       'password'=>Hash::make('jd(#Nfkd8d3'), 
       'email'=>'bobob@test.inc'
   ),
   ...
);

先のチュートリアルに取り組んだ方が、いつもEloquentを使うべきだという固定観念をもってしまわないように、紹介しておきます。