在使用laravel eloquent進(jìn)行數(shù)據(jù)庫操作的時候驚訝的發(fā)現(xiàn)這貨居然不支持批量添加,看到網(wǎng)上很多人在循環(huán)里進(jìn)行數(shù)據(jù)庫插入操作來實現(xiàn)批量添加,我想說這樣做是很損失性能滴!好在框架的DB門面里的insert方法可以進(jìn)行批量插入。代碼如下:
$data= [
['name'=>'111'],
['name'=>'222'],
];
DB::table('xxx')->insert($data);
但這樣有個問題就是表名每次都要手動來輸入。而我們一般情況下是在模型中進(jìn)行數(shù)據(jù)庫操作固阁,并且會封裝一些必要的方法到一個基類上壤躲。好在laravel模型為我們提供了一個getTable()方法可以得到當(dāng)前模型的表名。這樣我們就可以把批量操作放入一個公有的方法中去备燃。代碼如下:
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);