Symfony 1.4 Doctrine 1 Yaml, не может определить значение Timestamp по умолчанию

Я пытался установить 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

Также протестировано добавление атрибута значения 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?
  • Пожалуйста, не могли бы вы привести рабочий пример?

person xtrm    schedule 20.06.2013    source источник
comment
Спасибо за правки j0k, теперь намного лучше :)   -  person xtrm    schedule 20.06.2013
comment
Если вы просто оставите в своей схеме actAs: Timestampable, Doctrine автоматически добавит столбцы created_at и updated_at и позаботится о правильной обработке. Вам не нужно беспокоиться об этом.   -  person Michal Trojanowski    schedule 20.06.2013
comment
Это верно, Михал, однако мне нужно добавить значения по умолчанию для этих столбцов, поскольку иногда я отправляю необработанные SQL-запросы без использования Doctrine. Я могу идеально добавить эти значения по умолчанию, ИЗМЕНЯЯ все таблицы с помощью графического редактора MySQL с помощью простого цикла SQL, но все же хотел бы, чтобы вся моя информация была в schema.yml, если это возможно.   -  person xtrm    schedule 20.06.2013