AR не видит атрибутов и не сохраняет

Не могу понять в чем дело, подскажите где затупил

В rules прописал


[['CODE'], 'required'],

[['SORT'], 'integer'],

дергаю


$model = new Products;

$model->attributes = ['CODE' => 111, 'SORT' => 222];

$model->save();

В итоге в БД вижу запись, но все поля NULL так как по умолчанию стоит null, т.е. не могу задать атрибуты почему-то, getErrors пустой. getAttributes возвращает поля, все нормально, а в БД записать мы не можем( С yii2 мало работал, может есть какой-то свой подвох который я не вижу?

Попробуйте так:


$model = new Products(['CODE' => 111, 'SORT' => 222]); // в этом случае не будет проверки валидаторов

$model->save();

или


$model = new Products;

$model->setAttributes(['CODE' => 111, 'SORT' => 222]); // в этом случае будут присвоены только безопасные атрибуты (покрытые валидаторами)

$model->save();

Gismo, спасибо за ответ, я это уже все пробовал, все равно запись создает, но в поля ничего не пишет, т.е. в sql что-то вроде field = Null

Можно как-то посмотреть какой запрос построил AR, вот тут (http://www.yiiframework.com/doc-2.0/yii-db-activerecord.html) не нашел public метода класса ar который вернул бы что-нибудь подобное

http://yiigist.com/package/yiisoft/yii2-debug#?tab=readme

вот это расширение установите, там будут показываться все запросы к БД прямо на сайте.

Добавьте поля в safe, вы же масс ассигном пытаетесь их добавить.

И да дебаггер в помощь, там в этом случае warning выдает.

Возможно, уже некропост, но решил и сам проверить (особенно ввиду коммента ineersa).

Не добавлялось оно исключительно из-за несовпадения регистров букв:




$model = new Products;

$model->attributes = ['code' => 111, 'sort' => 222]; //а не CODE и SORT

$model->save();



А зачем? Насколько мне известно, все ат-ты в Yii2 по умолчанию safe, если они упоминаются в rules().

Скорее, подобная ситуация могла бы возникнуть в таком случае:




public function scenarios () {

	$scenarios['default'] = ['!code', '!sort'];

	return $scenarios;

}



Но, я думаю, написав такое, HazardCSS знал бы, в чём дело :slight_smile:

Было что то похожее. В в модели от ActiveRecord указал свойства в виде public $user_id = null;
и всё что добавлялось становилось null.