在开发中遇到过这样问题,foreach循环插入数据时,表中只插入了循环的最后一条数据,而其它数据没有真实添加,追踪发现,内存地址中循环时新一条数据会覆盖前一条数据,解决办法是另起一个对象;
如下:
第一种方法
$model = new User();
foreach($data as $attributes)
{
$_model = clone $model; //克隆对象
$_model->setAttributes($attributes);
$_model->save();
}
第二种方法
$model = new User();
foreach($data as $attributes)
{
$model->isNewRecord = true;
$model->setAttributes($attributes);
$model->save() && $model->id=0;
}