аплоад файла

Есть модель.


class Item extends CActiveRecord

{

    public $image;

    // ... other attributes

 

	 public static function model($className=__CLASS__)

         {

             return parent::model($className);

         }

		public function tableName()

         {

             return 'image';   // название нашей таблицы в базе данных

         }


	

    public function rules()

    {

        return array(

            array('image', 'file', 'types'=>'jpg, gif, png'),

        );

    }

}

Есть таблица image ссо следующими полями:

name, size, type.

Есть контроллер


class ItemController extends CController

{

    public function actionCreate()

    {

        $model=new Item;

        if(isset($_POST['Item']))

        {

            $model->attributes=$_POST['Item'];

            $model->image=CUploadedFile::getInstance($model,'image');

            if($model->save())

            {

		$model->image->saveAs('c:/temp/'.$model->image->name);

              // redirect to success page

            }

        }

        $this->render('create', array('model'=>$model));

    }

}

После исполнения скрипта, добавляется запись в Бд но с пустыми данными. Потому что значения(name, size …)

находятся в $model->image->name и $model->image->size.

Получется нужно делать


$model->size = $model->image->size; 

чтобы получить значения и занести их в Бд или есть другой способ занести $model->image->size; в таблицу image в поле size?

можно переписывать из $model->image->XXX в $model->XXX в методе onBeforeSave модели. Только проверь чтобы сценарий был insert или провеяй не постое ли у тебя file. Потому что onBeforeSave выполняется при каждом сохранении.

А,да, onBeforesave должнео возвращать true чтобы сохранение произошло