Search code examples
yii2yii2-advanced-appyii2-model

PHP - Yii 2.0 Multiple images are save in folder but not saved in database


I have used use kartik\file\FileInput; (extension) for saving multiple images from single form submit. The images are save locally but are not saving in the database.

Here is my Model Code media.php

namespace app\models;
use yii\web\UploadedFile;
class Media extends \yii\db\ActiveRecord
{
        public function rules(){
        return [
            [['title'], 'file', 'skipOnEmpty' => false, 'extensions' => ['gif', 'jpg', 'png', 'jpeg', 'JPG', 'JPEG', 'PNG', 'GIF'], 'checkExtensionByMimeType' =>  false ,'maxFiles' => 4, 'maxSize' => 1024 * 1024 * 1024],
                        [['extension'], 'string', 'max' => 6],
                ];        
        }

Controller code:

if ($mediamodel->load ( Yii::$app->request->post () )) {
    $title = UploadedFile::getInstances ( $mediamodel, 'title' );
    foreach ($title as $key => $file)          {
        $file->saveAs(Yii::$app->basePath . '/web/images/hotel/'. $file->baseName . '.' . $file->extension);}
        foreach ($title as $key => $file){   
        echo $mediamodel->title."*********";
        $mediamodel->title = $file->baseName . '.' . $file->extension;
        echo " \Title: ".$mediamodel->title;
        $mediamodel->save ();
    }
}

My view code:

use kartik\file\FileInput; 
$form = ActiveForm::begin([ 'layout' => 'horizontal', {label}\n{beginWrapper}\n{input}\n{hint}\n{error}\n{endWrapper}", 
    'fieldConfig' => ['horizontalCssClasses' => ['label' => 'col-md-3','offset' => 'col-md-offset-2','wrapper' => 'col-md-4', 'error' => '','hint' => '',],],'
    options' => [ 'class' => 'form-horizontal', 'enctype' => 'multipart/form-data', ], ]);?>

<?php echo $form->field($mediamodel, 'title[]')->widget(FileInput::classname(), ['options'=>['multiple' => true]]); 
Html::submitButton($model->isNewRecord ? 'Add' : 'Update');

Solution

  • use

    $mediamodel->save (false);
    

    instead of

    $mediamodel->save ();