Laravel4、シーディングと複数行インサート
タグ: 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を使うべきだという固定観念をもってしまわないように、紹介しておきます。