Почему я получаю сообщение “сбой валидатора” при сохранении Doctrine на Symfony 1.2?

StackOverflow https://stackoverflow.com/questions/926725

  •  06-09-2019
  •  | 
  •  

Вопрос

Допустим, у меня есть схема YAML, выглядящая примерно так :

Note:
  options:
    type: MyISAM
    collate: utf8_unicode_ci
    charset: utf8
  actAs: { Timestampable: ~ }
  columns:
    content: { type: string, notnull: true}
    order_id: int(5)
    user_id : int
  relations:
    User:
      foreignAlias: Notes
      local: user_id
      foreign: id
      type: one
      foreignType: man
      onDelete: CASCADE

При выполнении :

$note->setOrderId(0);
$note->save();

Я получаю следующую ошибку :

1 validator failed on order_id (type)

MySQL хранит order_id как bigint(20).

Я использую Ubuntu 9.10, Symfony 1.2, PHP 5 и MySQL 5.

Редактировать :

Получил подсказку, если я удалю все упоминания о размере в файле YAML, я получу вторую ошибку валидатора для order_id (длина) :-)

Это было полезно?

Решение

Я понял это.Замена "int" на "integer" и избавление от размера сделали свое дело.Теперь файл YAML выглядит следующим образом :

Note:
  options:
    type: MyISAM
    collate: utf8_unicode_ci
    charset: utf8
  actAs: { Timestampable: ~ }
  columns:
    content: { type: string, notnull: true}
    order_id: integer
    user_id : integer
  relations:
    User:
      foreignAlias: Notes
      local: user_id
      foreign: id
      type: one
      foreignType: man
      onDelete: CASCADE

Я попробовал это, потому что у других людей в сети были похожие ошибки, решил заменить "varchar" на "string".

Если кто-то зациклится на этом и прочтет этот ответ, выпейте пива от их имени :-)

Другие советы

Я знаю, что это устарело...

Я просто подумал, что мог бы уточнить, что допустимыми типами doctrine являются "integer", "string", "float", "decimal", "object", "clob", "blob", "enum", "array".

Затем Doctrine преобразует тип doctrine в правильный тип базы данных для выбранного серверного модуля.

Вот почему "int" не удалось выполнить проверку типа, но "integer" работает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top