Я пытался установить TIMESTAMP DEFAULT CURRENT_TIMESTAMP
значения по умолчанию для столбцов таблицы created_at
и updated_at
в моем schema.yml как объясняется в этом сообщении.
Информация о системе:
- Symfony 1.4.17, Доктрина 1
- MySQL 5.6.10
- PHP 5.4
Внимательно прочитайте документацию по определению столбца, но не смогли получить это работать. Как указано в документации, атрибут columnDefinition
должен быть установлен после имени столбца. После переноса базы данных значения по умолчанию, установленные в columnDefinition
для этих столбцов, не добавляются в базу данных MySQL.
Протестировано изменение с type: timestamp
на type: datetime
, но дата/время не распознается и при переносе отображается сообщение об ошибке. В документации все ссылки на тип Timestamp показывают, что он должен быть объявлен как: timestamp
- http://docs.doctrine-project.org/projects/doctrine1/en/latest/en/manual/defining-models.html
- http://symfony.com/legacy/doc/doctrine/1_2/en/04-Schema-Files
- https://doctrine.readthedocs.org/en/latest/en/manual/introduction-to-models.html
Также протестировано добавление атрибута значения default
для этих столбцов, но он все еще не установлен в MySQL.
schema.yml:
Tbmdtest005:
connection: md_test
columns:
id:
type: integer(8)
fixed: false
unsigned: false
primary: true
autoincrement: true
actAs:
Timestampable:
created:
name: created_at
columnDefinition: TIMESTAMP DEFAULT CURRENT_TIMESTAMP
default: CURRENT_TIMESTAMP
type: timestamp
format: Y-m-d H:i:s
options:
notnull: false
required: false
updated:
name: updated_at
columnDefinition: TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
default: CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
type: timestamp
format: Y-m-d H:i:s
options:
notnull: false
required: false
Таблица MySQL: tbmdtest005
создана в базе данных после переноса:
CREATE TABLE `tbmdtest005` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1 COLLATE=latin1_spanish_ci
Вопросы:
- Что-то не так в моем schema.yml?
- Пожалуйста, не могли бы вы привести рабочий пример?
actAs: Timestampable
, Doctrine автоматически добавит столбцыcreated_at
иupdated_at
и позаботится о правильной обработке. Вам не нужно беспокоиться об этом. - person Michal Trojanowski   schedule 20.06.2013