2

我需要在 yii 模型操作 create 或 Addipblock() 中运行 forloop 并保存每条记录,尽管 forloop 结束,然后将其重定向到查看管理员,

我的第一条记录从 1 开始到 50 结束,所以在数据库中应该添加 50 条记录。

我的代码是这样的:

`public function actionAddipblock(){        
    $model=new IpManager('addipblock'); 
    if(isset($_POST['IpManager'])){
        $model->attributes=$_POST['IpManager'];         
        $starting_ip = $_POST['IpManager']['starting_ip'];
        $ending_ip   = $_POST['IpManager']['ending_ip'];            
        if($model->validate('addipblock')){             
        for($ip = $starting_ip; $ip <= $ending_ip; $ip++){
            $model->ip = $ip;
            $model->server = $_POST['IpManager']['server'];
            $model->client = $_POST['IpManager']['client'];
            $model->status = $_POST['IpManager']['status'];
            $model->creation_date = date("Y-m-d H:i:s");
        }           
        if($model->save()){ 
               $this->redirect(array('admin'));     
         }
          else{
                echo 'Error:';
            }               
        }
    }
    $this->render('addipblock',array('model'=>$model));
}` 

但是当我运行这段代码时,它只保存一条记录,而不是保存所有记录,直到 forloop 结束。伙计们,你会为此建议我什么?我该怎么办?

4

1 回答 1

3

在你的forloop里面试试这个,

    for($ip = $starting_ip; $ip <= $ending_ip; $ip++){
    // you need to null your model primary key
    $model->id = null; // like this
    $model->ip = $ip;
    $model->server = $_POST['IpManager']['server'];
    $model->client = $_POST['IpManager']['client'];
    $model->status = $_POST['IpManager']['status'];
    $model->creation_date = date("Y-m-d H:i:s");
    $model->isNewRecord = true;
    $model->save();

}

于 2013-08-30T07:49:59.400 回答