HazardCSS
(Komduv)
February 5, 2015, 12:07pm
1
Не могу понять в чем дело, подскажите где затупил
В rules прописал
[['CODE'], 'required'],
[['SORT'], 'integer'],
дергаю
$model = new Products;
$model->attributes = ['CODE' => 111, 'SORT' => 222];
$model->save();
В итоге в БД вижу запись, но все поля NULL так как по умолчанию стоит null, т.е. не могу задать атрибуты почему-то, getErrors пустой. getAttributes возвращает поля, все нормально, а в БД записать мы не можем( С yii2 мало работал, может есть какой-то свой подвох который я не вижу?
gismo
(Gismo05)
February 5, 2015, 12:40pm
2
Попробуйте так:
$model = new Products(['CODE' => 111, 'SORT' => 222]); // в этом случае не будет проверки валидаторов
$model->save();
или
$model = new Products;
$model->setAttributes(['CODE' => 111, 'SORT' => 222]); // в этом случае будут присвоены только безопасные атрибуты (покрытые валидаторами)
$model->save();
HazardCSS
(Komduv)
February 5, 2015, 1:02pm
3
Gismo, спасибо за ответ, я это уже все пробовал, все равно запись создает, но в поля ничего не пишет, т.е. в sql что-то вроде field
= Null
Можно как-то посмотреть какой запрос построил AR, вот тут (http://www.yiiframework.com/doc-2.0/yii-db-activerecord.html ) не нашел public метода класса ar который вернул бы что-нибудь подобное
gismo
(Gismo05)
February 5, 2015, 2:05pm
4
http://yiigist.com/package/yiisoft/yii2-debug#?tab=readme
вот это расширение установите, там будут показываться все запросы к БД прямо на сайте.
ineersa
(Ineersa)
February 6, 2015, 10:52am
5
HazardCSS:
Не могу понять в чем дело, подскажите где затупил
В rules прописал
[['CODE'], 'required'],
[['SORT'], 'integer'],
дергаю
$model = new Products;
$model->attributes = ['CODE' => 111, 'SORT' => 222];
$model->save();
В итоге в БД вижу запись, но все поля NULL так как по умолчанию стоит null, т.е. не могу задать атрибуты почему-то, getErrors пустой. getAttributes возвращает поля, все нормально, а в БД записать мы не можем( С yii2 мало работал, может есть какой-то свой подвох который я не вижу?
Добавьте поля в 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 знал бы, в чём дело
ilyaBob
(ilyaBob)
December 6, 2023, 3:13am
8
Было что то похожее. В в модели от ActiveRecord указал свойства в виде public $user_id = null;
и всё что добавлялось становилось null.