@hollanditkzn

Как понять почему у меня только один столбец не сохраняет в бд?

У меня появилась такая ошибка, что когда я хочу изменить только статус он в запросах есть post, но в итоге сохраняет все кроме этого столбца. То есть там данные остаются старые после сохранение. И при этом никакие ошибки не выдает
Как я реализовал одну из actons в контроллере
public function actionAccept($id)
    {
        $model = $this->findModel($id);
//        $model->scenario = Zakaz::SCENARIO_DEFAULT;

        if ($model->load(Yii::$app->request->post())){
            $model->validate();
            if ($model->save()) {
//                d(Yii::$app->request->post());
                return $this->redirect(['admin', 'id' => $id]);
            } else {
                print_r($model->getErrors());
            }
        } else {
            return $this->renderAjax('accept', ['model' => $model]);
        }
    }

А в моделе
const STATUS_DISAIN = 3;
const STATUS_MASTER = 6;
const STATUS_AUTSORS = 8;
const SCENARIO_DECLINED = 'declined';
    const SCENARIO_DEFAULT  = 'default';
public function scenarios()
    {
        return [
            self::SCENARIO_DECLINED => ['declined', 'required'],
            self::SCENARIO_DEFAULT => ['srok', 'number', 'description', 'phone', 'sotrud_name', 'required'],
        ];
    }
 public function rules()
    {
        return [
            [['srok', 'number', 'description', 'phone', 'sotrud_name'], 'required', 'on' => self::SCENARIO_DEFAULT],
            ['declined', 'required', 'message' => 'Введите причину отказа', 'on'=> self::SCENARIO_DECLINED],
            [['id_zakaz', 'id_tovar', 'oplata', 'fact_oplata', 'minut', 'time', 'number', 'status', 'action', 'id_sotrud', 'phone', 'id_shipping' ,'prioritet', 'statusDisain'], 'integer'],
            ...
        ];
    }

А вот что я вижу в post
Zakaz => array (1)
status => string (1) "3"
  • Вопрос задан
  • 111 просмотров
Решения вопроса 1
qonand
@qonand
Software Engineer
метод scenarios возвращает список безопасных атрибутов, т.е. атрибутов которым можно массово присвоить значение, в том числе и с помощью используемого Вами метода load. В Вашем же случае поле статуса не указано как безопасный атрибут ни для одного из сценариев, поэтому его значение и не загружается в модель из поста. Соответственно Вам необходимо его добавить в список безопасных атрибутов для нужного сценария. Более подробно про безопасные атрибуты можно прочитать здесь
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы