После обновления сломался TimestampBehavior

Уже исправленные репорты или принятые предложения
Ответить
anmaslov
Сообщения: 15
Зарегистрирован: 2014.05.15, 12:06

После обновления сломался TimestampBehavior

Сообщение anmaslov »

Поле имеет формат datetime

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

 public function behaviors()
    {
        return [
         [
             'class' => TimestampBehavior::className(),
             'updatedAtAttribute' => 'created_at',
             'value' => new Expression('NOW()'),
         ],
        ];
    }
В поле created_at стали записываться одни нули, т.е. 0000-00-00 00:00:00, если сменить тип поля на int и убрать value, то timestamp успешно записывается. Все же работает, если написать так:

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

'value' => new Expression(date('Y-m-d')),
На самой базе, если выполнить NOW() - возвращает текущее время и дату.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: После обновления сломался TimestampBehavior

Сообщение zelenin »

new Expression используется для добавления бд-функций. для php-функций это не имеет смысла
anmaslov
Сообщения: 15
Зарегистрирован: 2014.05.15, 12:06

Re: После обновления сломался TimestampBehavior

Сообщение anmaslov »

Вопрос был в том, что не работает

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

'value' => new Expression('NOW()'), 
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: После обновления сломался TimestampBehavior

Сообщение zelenin »

anmaslov писал(а):Вопрос был в том, что не работает

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

'value' => new Expression('NOW()'),
я понял вопрос. почему не работает можно понять буквально за минуту. сначала посмотреть получаемый sql-запрос в дебаг-панели. если он не соответствует ожиданию, дампануть метод getValue в поведении.
anmaslov
Сообщения: 15
Зарегистрирован: 2014.05.15, 12:06

Re: После обновления сломался TimestampBehavior

Сообщение anmaslov »

Запрос и дамп панели

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

INSERT INTO `pg_link_stats` (`link_id`, `user_id`, `userip`, `userhost`, `useragent`, `created_at`) VALUES (4, 1, '127.0.0.1', NULL, 'userhost', :qp5)
Там, где должна быть дата :qp5

Дамп $this->value, в методе getValue

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

yii\db\Expression Object ( [expression] => NOW() [params] => Array ( ) )
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: После обновления сломался TimestampBehavior

Сообщение samdark »

Какая СУБД?
anmaslov
Сообщения: 15
Зарегистрирован: 2014.05.15, 12:06

Re: После обновления сломался TimestampBehavior

Сообщение anmaslov »

Mysql 5.5.41
Откатил Yii на 2.0.4 - все снова заработало!

И запрос стал нормальным:

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

INSERT INTO `pg_link_stats` (`link_id`, `user_id`, `userip`, `userhost`, `useragent`, `created_at`) VALUES (4, 1, '127.0.0.1', NULL, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 YaBrowser/15.2.2214.3645 Safari/537.36', NOW())
Появился Now()
anmaslov
Сообщения: 15
Зарегистрирован: 2014.05.15, 12:06

Re: После обновления сломался TimestampBehavior

Сообщение anmaslov »

Да, похоже что оно, только у меня на 2.0.5-dev не работает, а на 2.0.4 заработало.
Sql код приводил выше: почему то вместо NOW() подставляется :qp5
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: После обновления сломался TimestampBehavior

Сообщение samdark »

git bisect сумеете сделать?
anmaslov
Сообщения: 15
Зарегистрирован: 2014.05.15, 12:06

Re: После обновления сломался TimestampBehavior

Сообщение anmaslov »

Прошу прощения, если сделал что то не то (делал это первый раз)

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

>git bisect start

>git bisect good 726867ca
Bisecting: 21 revisions left to test after this (roughly 5 steps)
[0297ad8d9cfefd716560d809a49fee9d06e01163] Issue #6043 added to CHANGELOG.md

>git bisect good
Bisecting: 8 revisions left to test after this (roughly 4 steps)
[ab1169f501e71dd32749a87da36d67c92d979b21] Merge branch 'master' into 7374-inser
ting-ar-without-values

>git bisect bad
Bisecting: 6 revisions left to test after this (roughly 3 steps)
[9648a8ffb09850629f12750480407a5c5ae97e81] `yii\widgets\ActiveField` now uses co
rresponding methods for default parts rendering

>git bisect good
Bisecting: 3 revisions left to test after this (roughly 2 steps)
[5b3ed4bbd6d8e2dfd171af706fff3181d6304a11] fix typos

>git bisect bad
Bisecting: 0 revisions left to test after this (roughly 1 step)
[e0adcf4efe6f5132a432828b4498cb89b46a191c] add missing space

>git bisect bad
Bisecting: 0 revisions left to test after this (roughly 0 steps)
[21379a8f1a11b16f691280f644dea0772a1dc165] allow calling Command::insert() witho
ut any columns

>git bisect bad
21379a8f1a11b16f691280f644dea0772a1dc165 is the first bad commit
commit 21379a8f1a11b16f691280f644dea0772a1dc165
Author: Jan Was <[email protected]>
Date:   Sat Apr 11 02:20:13 2015 +0200

    allow calling Command::insert() without any columns

:040000 040000 3f81687c9c6e1a9aec7ac886cde07d187f8dadb8 0c63ba58964b7919ab18f1f2
4fb9ebf3d19048e0 M      db

>git bisect reset
Previous HEAD position was 21379a8... allow calling Command::insert() without an
y columns
  (use "git push" to publish your local commits)
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: После обновления сломался TimestampBehavior

Сообщение samdark »

Да, всё верно. Вроде вот этот: https://github.com/yiisoft/yii2/commit/ ... a0fa14ba9a
anmaslov
Сообщения: 15
Зарегистрирован: 2014.05.15, 12:06

Re: После обновления сломался TimestampBehavior

Сообщение anmaslov »

Пофиксили, спасибо!
Ответить