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