Задать вопрос
@victorib_us

Почему в Yii2 не работает save()?

Есть код такого вида:
$model=new Products();
$model=$model->findOne(['id'=>1]);
$model->name="Новое название";
$model->save();

То есть нужно перезаписать поле но save не работает и подсвечивается в IDE как "not found in class null|static"
Если убрать строчку $model=$model->findOne(['id'=>1]);
то создает новый товар, а как этот отредактировать то ? Хоть убейте не вижу тут ошибки.

class Products extends \yii\db\ActiveRecord
{
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'products';
    }

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['name', 'url', 'price','quantity','category_id','options_id','mark','model'], 'required'],
            [['price'], 'number'],
            [['full_desc'], 'string'],
            [['category_id','options_id','quantity','status'], 'integer'],
            [['name', 'url'], 'string', 'max' => 50],
            [['short_desc'], 'string', 'max' => 250]
        ];
    }
}

P.S я знаю что кроме name есть еще поля и они обозначены как required я их тоже указываю при редактировании просто не писал в примере чтобы не усложнять читабельность
  • Вопрос задан
  • 5440 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
muzikant777
@muzikant777
PHP/Vue разработчик
$model = Product::findOne(['id'=>1]);
$model->name="Новое название";
$model->save();

Почитайте про active record в Yii2: www.yiiframework.com/doc-2.0/guide-db-active-recor...
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Сильно смущает $model=$model->findOne(['id'=>1]). Наверное стоит сделать так:
$oldmodel=Product::findOne(['id'=>1]);
$model=new Product();
$model->attributes = $oldmodel->attributes;
$model->name="Новое название";
$model->save();

Если я правильно понял Ваши цели
Ответ написан
@Nikita096
Конфликтуют почему-то два правила для одного поля
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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