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を使うべきだという固定観念をもってしまわないように、紹介しておきます。