@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"
  • Вопрос задан
  • 112 просмотров
Решения вопроса 1
qonand
@qonand
Software Engineer
метод scenarios возвращает список безопасных атрибутов, т.е. атрибутов которым можно массово присвоить значение, в том числе и с помощью используемого Вами метода load. В Вашем же случае поле статуса не указано как безопасный атрибут ни для одного из сценариев, поэтому его значение и не загружается в модель из поста. Соответственно Вам необходимо его добавить в список безопасных атрибутов для нужного сценария. Более подробно про безопасные атрибуты можно прочитать здесь
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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