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

Как проверить есть ли совпадение в базе по id? И обновить данные если такая запись есть?

Контроллер принимает запись с формы

class EditPriceController extends Controller
{
    public function actionIndex(){

        $post = Yii::$app->request->post();
        $model = EditPrice::findOne(['org_id' => $post['org_id']]);

        if (is_null($model)) {
            $model = new EditPrice();
            if($model->load($post)){
                if($model->save()){
                    Yii::$app->session->setFlash('success', 'Данные приняты');
                    return $this->refresh();
                }else{
                    Yii::$app->session->setFlash('error', 'ОЛОЛО ШТО ТО НЕ ТАГ');
                }
            }
        } else {
            $model->load($post);
            if($model->save()){
                Yii::$app->session->setFlash('success', 'Данные приняты');
                return $this->refresh();
            }else{
                Yii::$app->session->setFlash('error', 'ОЛОЛО ШТО ТО НЕ ТАГ');
            }
        }
        return $this->render('index', compact('model'));
    }
}


во view форма выглядит вот так

<?php $form = ActiveForm::begin(['options' => ['id' => 'testForm']])?>
<?= $form->field($model,'org_id')->label('id организации')?>
<?= $form->field($model,'arrive_in_week')->label('Цена возврата за неделю')?>
<?= Html::submitButton('Отправить', ['class' => 'btn btn-success'])?>
<?php $form = ActiveForm::end()?>


я пытаюсь проверить приходит ли org_id который уже есть в базе и если есть - обновить, а если нет записать
но $model приходит как null, и записи только записываются, подскажите как можно решить данную проблему?
  • Вопрос задан
  • 85 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
vitaly_74
@vitaly_74
я думаю проблема в return $this->refresh();
Попробуйте заменить на return $this->render('index', compact('model'));
либо вообще закомментируйте, алгоритм все равно спустится до render.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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