我在Yii2工作。我正在尝试上传文件并尝试将其路径保存到数据库中,但路径未保存

时间:2017-07-10 06:09:11

标签: file upload yii2

我可以成功上传文件并尝试将其路径保存到数据库中。但没有保存路径。这是我的代码的一部分。

在我的ItemsController中:

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

    if ($model->load(Yii::$app->request->post()) && $model->save()) {

        $imageName = $model->item_name;
        $model->file = UploadedFile::getInstance($model,'file');
        $model->file->saveAs('uploads/'.$imageName.'.'.$model->file->extension);
        $model->item_pathname = 'uploads/'.$imageName.'.'.$model->file->extension;


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

我可以将文件成功保存在uploads文件夹中,并成功将其更改为item_name。但我无法将其保存到我的数据库image_pathname列中。我怎样才能做到这一点?感谢。

我见过一个例子,您可以使用$models->sample_data = '';直接将数据输入数据库。我不知道为什么我的工作不起作用。

1 个答案:

答案 0 :(得分:0)

您需要在item_pathname更改后保存模型。

$model->item_pathname = ...;
$model->save();

正确的代码是

if ($model->load(Yii::$app->request->post()) && $model->validate()) {

    $imageName = $model->item_name;
    $model->file = UploadedFile::getInstance($model,'file');
    $model->file->saveAs('uploads/'.$imageName.'.'.$model->file->extension);
    $model->item_pathname = 'uploads/'.$imageName.'.'.$model->file->extension;
    $model->save();
    ...
 }

首先验证,然后更改路径并保存。