2017-07-10 1 views
-1

ファイルを正常にアップロードして、そのパスをデータベースに保存しようとしています。しかし、道は救われません。ここに私のコードの一部があります。私ItemsControllerで私はYii2で働いています。ファイルをアップロードし、そのパスをデータベースに保存しようとしていますが、パスは保存されません。

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, 
     ]); 
    } 
} 

私は正常にアップロードフォルダにファイルを保存し、成功しITEM_NAMEにそれを変更することができます。しかし、データベースimage_pathnameカラムにパスを保存することはできません。どうやってやるの?ありがとう。

$models->sample_data = '';を使用してデータベースに直接データを入力できる例を見てきました。私はなぜ私の作品が動作しないのか分かりません。

答えて

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(); 
    ... 
} 

まず検証だろう。

関連する問題