Yii2 上传多次成功但只将第一个值保存到数据库

Yii2 upload multiple success but save only first value to database

我正在为我的网站编写多重上传功能。上传成功。但它只是将第一个值保存到我的数据库中。示例我上传 3 个文件名称 1.jpg、2.jpg、3.jpg。然后它将成功上传 3 个文件,但仅将 1.jpg 的名称保存到数据库。

我的控制器

public function actionCreate()
{
    $model = new Resource3d();

    if ($model->load(Yii::$app->request->post())) {
        $model->files = UploadedFile::getInstances($model, 'files');  

        foreach ($model->files as $files){

            $files->saveAs('uploads/resource3d/' . $files->baseName . $files->extension); 
            $model->path = '../web/uploads/resource3d/'. $files->baseName . $files->extension;      
            $model->name =  $files->baseName;   
            $model->save();          

        }

        return $this->redirect(['index']);
    } else {
        return $this->render('create', [
            'model' => $model,
        ]);
    }
}

我的模特:

public $files;
public function rules()
{
    return [
        [['name', 'path'], 'string', 'max' => 255],
        [['files'], 'file', 'skipOnEmpty' => false, 'maxFiles' => 0],
    ];
}

请帮忙。

谢谢。

您正在创建模型的单个对象 Resource3d。如果要保存多条记录,需要创建多个对象。

试试这个:

public function actionCreate()
{
    $model = new Resource3d();

    if ($model->load(Yii::$app->request->post())) {
        $model->files = UploadedFile::getInstances($model, 'files');  

        foreach ($model->files as $files){
            $res_model = new Resource3d();
            $res_model->load(Yii::$app->request->post());
            $files->saveAs('uploads/resource3d/' . $files->baseName . $files->extension); 
            $res_model->path = '../web/uploads/resource3d/'. $files->baseName . $files->extension;      
            $res_model->name =  $files->baseName;   
            $res_model->save();          
        }

        return $this->redirect(['index']);
    } else {
        return $this->render('create', [
            'model' => $model,
        ]);
    }
}

这只是一个示例,请根据您的需要进行更改。