laravel实现批量添加数据

在使用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);

你可能感兴趣的:(laravel实现批量添加数据)