$model->save() создает две запись вместо одной

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
an.viktory@gmail.com
Сообщения: 536
Зарегистрирован: 2016.09.05, 23:21

$model->save() создает две запись вместо одной

Сообщение an.viktory@gmail.com »

Код: Выделить всё

$model->save();
Почему-то при сохранении в базу создает 2 записи вместо 1
с логе одна запись INSERT
решил фиксировать каждое сохранение

Код: Выделить всё

public function beforeSave($insert)
    {
        D::alert("УСПЕШНО СОХРАНИЛИ", 'primary');
        return parent::beforeSave($insert); 
    }
и скрипт дает ОДНО сохранение.
где искать проблему ?
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: $model->save() создает две запись вместо одной

Сообщение Nex-Otaku »

В остальном коде. Где-то запись добавляется без вашего ведома.
an.viktory@gmail.com
Сообщения: 536
Зарегистрирован: 2016.09.05, 23:21

Re: $model->save() создает две запись вместо одной

Сообщение an.viktory@gmail.com »

но ведь в логе после обработки всего скрипта нет больше INSERT, консольных процессов тоже нет.
someweb
Сообщения: 552
Зарегистрирован: 2017.03.09, 10:12

Re: $model->save() создает две запись вместо одной

Сообщение someweb »

Посмотрите в дебаг панели Yii2
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
an.viktory@gmail.com
Сообщения: 536
Зарегистрирован: 2016.09.05, 23:21

Re: $model->save() создает две запись вместо одной

Сообщение an.viktory@gmail.com »

в дебаг панели всего один INSERT
someweb
Сообщения: 552
Зарегистрирован: 2017.03.09, 10:12

Re: $model->save() создает две запись вместо одной

Сообщение someweb »

А предыдущий лог на сколько по времени отличается? Может redirect или refresh срабатывает и фактически получается два запроса. Или ajax ом вызывается.
Или триггер в базе.
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
skynin
Сообщения: 400
Зарегистрирован: 2017.12.12, 10:09

Re: $model->save() создает две запись вместо одной

Сообщение skynin »

был у меня как-то такой баг, нужно было сделать клонирование сущности, и наспех подцепил к /update
an.viktory@gmail.com писал(а): 2018.05.24, 10:21 в дебаг панели всего один INSERT
ищите в логе по всем последним запросам. В одном запросе будет один INSERT, но в двух то - два :)
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
an.viktory@gmail.com
Сообщения: 536
Зарегистрирован: 2016.09.05, 23:21

Re: $model->save() создает две запись вместо одной

Сообщение an.viktory@gmail.com »

а как смотреть правильно лог ?
someweb
Сообщения: 552
Зарегистрирован: 2017.03.09, 10:12

Re: $model->save() создает две запись вместо одной

Сообщение someweb »

Там кнопочка las10 смотрите все, если разница между запросами по времени незначительная, значит выполняется два раза.
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
an.viktory@gmail.com
Сообщения: 536
Зарегистрирован: 2016.09.05, 23:21

Re: $model->save() создает две запись вместо одной

Сообщение an.viktory@gmail.com »

Код: Выделить всё

5b067955d83ca: GET http://example.com/products-render/manual-render?id=589 at 2018-05-24 11:35:33 am by 127.0.0.1

5b067955d83ca: GET http://example.com/products-render/manual-render?id=589 at 2018-05-24 11:35:32 am by 127.0.0.1
действильно идет два запроса, а это не может быть из-за rbac ?
an.viktory@gmail.com
Сообщения: 536
Зарегистрирован: 2016.09.05, 23:21

Re: $model->save() создает две запись вместо одной

Сообщение an.viktory@gmail.com »

у меня есть главный контроллер который перенаправляет если пользователь не авторизован, от него наследуются все.

Код: Выделить всё

class MainController extends \yii\web\Controller
{
    public function beforeAction($action)
    {

        if (Yii::$app->user->isGuest)
        {
           echo "ПОЛЬЗОВАТЕЛЬ НЕ АВТОРИЗОВАН";
            Yii::$app->user->logout();
           if (Yii::$app->controller->action->id != 'login') $this->redirect(['site/login']);
        }
         
        return parent::beforeAction($action); // TODO: Change the autogenerated stub
    }

}
someweb
Сообщения: 552
Зарегистрирован: 2017.03.09, 10:12

Re: $model->save() создает две запись вместо одной

Сообщение someweb »

Зачем так перенаправлять то. Если AccessControl есть, то сам перекинет.
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: $model->save() создает две запись вместо одной

Сообщение urichalex »

Вангую в форме включен enableAjaxValidation а в экшене не ловится
an.viktory@gmail.com
Сообщения: 536
Зарегистрирован: 2016.09.05, 23:21

Re: $model->save() создает две запись вместо одной

Сообщение an.viktory@gmail.com »

как правильно перенаправлять через Access контроль ?
an.viktory@gmail.com
Сообщения: 536
Зарегистрирован: 2016.09.05, 23:21

Re: $model->save() создает две запись вместо одной

Сообщение an.viktory@gmail.com »

Код: Выделить всё

 <?php $form = ActiveForm::begin([
        'action' => ['manual-render'],
        'method' => 'get',
    ]); ?>
    
someweb
Сообщения: 552
Зарегистрирован: 2017.03.09, 10:12

Re: $model->save() создает две запись вместо одной

Сообщение someweb »

Ничего не делать, сам перенаправит.

Код: Выделить всё

        'user' => [
            'identityClass' => app\common\models\UserIdentity::class,
            'enableAutoLogin' => true,
            'loginUrl' => ['site/login'], //значение по умолчанию, можно не указывать.
        ],
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
an.viktory@gmail.com
Сообщения: 536
Зарегистрирован: 2016.09.05, 23:21

Re: $model->save() создает две запись вместо одной

Сообщение an.viktory@gmail.com »

не срабатывает автологин
ни так

Код: Выделить всё

'user' => [
            'identityClass' => 'mdm\admin\models\User',
            'enableAutoLogin' => true,
            'loginUrl' => ['user/login'],
        ],
        
ни так

Код: Выделить всё

'user' => [
            'identityClass' => 'mdm\admin\models\User',
            'enableAutoLogin' => true,
            'loginUrl' => ['admin/user/login'],
        ],
хочу чтобы перенаправляло сразу на страницу авторизации
someweb
Сообщения: 552
Зарегистрирован: 2017.03.09, 10:12

Re: $model->save() создает две запись вместо одной

Сообщение someweb »

AccessControl есть в контроллере или модуле?
https://p0vidl0.info/yii2-api-guides/gu ... la-dostupa
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
an.viktory@gmail.com
Сообщения: 536
Зарегистрирован: 2016.09.05, 23:21

Re: $model->save() создает две запись вместо одной

Сообщение an.viktory@gmail.com »

я использую

Код: Выделить всё

'identityClass' => 'mdm\admin\models\User',
он подразумевает установку фильтров или все проставляется в config ?

Код: Выделить всё

 'as access' => [
        'class' => 'mdm\admin\components\AccessControl',
        'allowActions' => [
           
        ],
    ],
Ответить