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

タグ: Laravel4  

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

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

  1. DB::table( 'roles' )->delete();
  2.  
  3. $roles = array(
  4. array( 'rolename' => 'super'),
  5. array( 'rolename' => 'システム管理者'),
  6. array('rolename' => 'モデレーター'),
  7. array('rolename' => '一般ユーザー'),
  8. array( 'rolename' => 'ban'),
  9. );
  10.  
  11. DB::table('roles')->insert( $roles );

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

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

  1. array(
  2. array(
  3. 'username'=>'myName',
  4. 'password'=>Hash::make('jd(#Nfkd8d3'),
  5. 'email'=>'bobob@test.inc'
  6. ),
  7. ...
  8. );

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