YiiFramework метод getId() неожиданно вернул 0

Европа - быстрые серверы на дисках NVMe от $5 / Русский датацентр от 199руб

Тема в разделе "Yii Framework", создана пользователем gizmo1308, 26 окт 2018.

  1. gizmo1308

    gizmo1308 Новичок

    Сообщения:
    1
    Ваш город:
    Новосибирск, Россия
    Address:
    Novosibirsk, Russia
    Country:
    Location on Map:
    Всем привет! я новичок в Yii2, поэтому могу путаться в терминологии, заранее извините, если что не так.

    Суть проблемы. В приложении в базе данных изначально занесены пользователи, которые имеют доступ к нему. Соответственно, при изменении или создании из приложения каких-то данных в других таблицах бд, если требуется сохранить пользователя, который это сделал, используется Yii::$app->user->identity->getId(). До этого момента все понятно и логично.

    Но сегодня столкнулся с тем, что при изменении данных из-под моего аккаунта в базу в значение изменившего юзера был занесен 0, который, естественно, не является ни моим id, ни чьим бы то ни было. По умолчанию для данного поля таблицы стоит null, т.е. этому 0 вообще неоткуда было взяться.

    Подозрение было на то, что страница долгое время была неактивна, но в таком случае, если истекло время сессии, меня должно было просто выбросить из приложения на страницу авторизации. Ну и как-то это тоже не логично.

    Перекопали с гораздо более опытными ребятами все, что могли, но даже близко не смогли понять, в чем могла быть ошибка. При последующих сохранениях все проходило как было задумано. Кода нет, потому что даже не представляю, что может понадобиться. Все довольно стандартно и до того момента подобных проблем замечено не было.

    Может, есть какие-то соображения о причинах такого поведения?
     
  2. pr1

    pr1 Новичок

    Сообщения:
    8
    Ваш город:
    Антананариву, Мадагаскар
    Address:
    Antananarivo, Madagascar
    Country:
    Location on Map:
    Я не спец в Yii, но возможно перед записью в базу делается приведение null к int, что делает 0. А вообще, чтобы не было таких проблем, во-первых перед записью всегда делайте проверки, во-вторых используйте внешние ключи в базе.
     
  3. ivanov77

    ivanov77 Новичок

    Сообщения:
    122
    Ваш город:
    Чернигов, Черниговская область, Украина
    Address:
    Chernihiv, Ukraine
    Country:
    Location on Map:
    ошибка же будет для анонима.
    Вот так id получают: Yii::$app->user->id