Объясните почему такое страное поведение при сохранении?

вот собственно код

$basePath='page/2016/10/';
    $field='id_page';
    $id=1;
    $name='podborka_vecher_01.jpg,%, podborka_vecher_17.jpg'
    
    public function baseSave($basePath,$field,$id,$name){
            $transliterator= new Translit();
            $bp = array();
            if(preg_match('/,%,/',$name)){
                $mathes=explode(',%,',$name);
                foreach ($mathes as $math){
                    $bp[] = $basePath;
                    $names=$transliterator->traranslitImg($math);
                    $theImage= Image::findOne(['path'=>$basePath, 'name'=>$name ]);
                    if(!isset($theImage)){
                        $this->path=$basePath;
                        $this->$field=$id;
                        $this->name=$names;
                        $this->insert();
                    }
                }
            }else{
                $names=$transliterator->traranslitImg($name);
                $theImage= Image::findOne(['path'=>$basePath, 'name'=>$name ]);
                if(!isset($theImage)) {
                    $this->path = $basePath;
                    $this->$field = $id;
                    $this->name = $names;
                    $this->save();
                }
            }
        }

получаю следующую ошибку

SQLSTATE[HY000]: General error: 1364 Field 'path' doesn't have a default value
    The SQL being executed was: INSERT INTO `abh_image` (`name`) VALUES ('-podborka_vecher_17.jpg')


не понимаю куда делось работа с этим

$this->path=$basePath;
    $this->$field=$id;


и почему работает только $this->name=$names;

$this->$field = $id сюда приходит $field наименование поля модели в данном случае'id_page'$this->path это поле модели вот они все
'id', 'id_gods', 'id_post', 'id_cat', 'id_page'  ,'path'  ,'name'
суть в том, что при первой итерации foreach все работает на второй итерации появляется такая ошибка.
  • Вопрос задан
  • 59 просмотров
Решения вопроса 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
1. у Вас $basePath='page/2016/10/'; или public $basePath='page/2016/10/';?
2. Что у Вас в rules?
3. Для точного ответа - выложите всю модель, а не ее кусочек
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы