在使用laravel eloquent進行數據庫操作的時候驚訝的發現這貨居然不支持批量添加,看到網上很多人在循環里進行數據庫插入操作來實現批量添加,我想說這樣做是很損失性能滴!好在框架的DB門面里的insert方法可以進行批量插入。代碼如下:
$data= [
['name'=>'111'], ['name'=>'222'], ]; DB::table('xxx')->insert($data);
但這樣有個問題就是表名每次都要手動來輸入。而我們一般情況下是在模型中進行數據庫操作,並且會封裝一些必要的方法到一個基類上。好在laravel模型為我們提供了一個getTable()方法可以得到當前模型的表名。這樣我們就可以把批量操作放入一個公有的方法中去。代碼如下:
class BaseModel extend Model { public function addAll(Array $data) { $rs = DB::table($this->getTable())->insert($data); return $rs; } } class User extend BaseModel { } //使用時 $user = new User(); $data= [ ['name'=>'111'], ['name'=>'222'], ]; $user->addAll($data);
鏈接:https://www.jianshu.com/p/b4b08a5a43fe