Почему я получаю «сбой валидатора» при сохранении с Doctrine в Symfony 1.2? - PullRequest
3 голосов
/ 29 мая 2009

Допустим, у меня есть схема 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 (длина): -)

Ответы [ 2 ]

2 голосов
/ 30 мая 2009

Я понял. Замена "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".

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

0 голосов
/ 29 сентября 2009

Я знаю, что это старый ...

Я просто подумал, что могу уточнить, что допустимыми типами доктрин являются "целое число", "строка", "число с плавающей точкой", "десятичное число", "объект", "clob", "blob", "enum", "array".

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

Вот почему «int» не прошел валидацию типа, но «integer» работает.

...