Доктрина 1.2: Сохранить запись из POST: ошибка проверки в поле целочисленной модели - PullRequest
2 голосов
/ 17 апреля 2011

Я создаю свою запись Учения следующим образом:

$user = new User();
$user->fromArray($_POST);
$user->save();

Это исключение:

Uncaught exception 'Doctrine_Validator_Exception' with message 'Validation failed in class User 1 field had validation error: * 1 validator failed on dni (type)

Конечно, поле "dni" имеет тип: integer, а HTTP POST имеет все значения в виде строк. Это то, что делает проверку неудачной. Единственный способ пройти валидацию это сделать:

$_POST['dni'] = (int) $_POST['dni'];

Но он чувствует себя не так. Как примечание, я работаю с Doctrine, интегрированным в CodeIgniter. Это никогда не случалось со мной, когда работал с Symfony.

Большое спасибо.

1 Ответ

2 голосов
/ 10 ноября 2011

Это старый, но без ответа, так что вот оно:

$manager->setAttribute(Doctrine_Core::ATTR_VALIDATE, VALIDATE_ALL & ~VALIDATE_TYPES);

Вы можете поручить Doctrine проверить все или никакие комбинации: Типы (ваша проблема), Длина, Ограничения,Все и ничего.

Вы можете сделать это на глобальном уровне .

Возможно, также на уровне соединения.

И определенно для таблицы, но я не смог найти ее в документации по доктрине 1015 *.

и вам не нужно беспокоиться о том, что в базу данных будет вставлен неправильный тип данных, БД не позволит вам, и это не в руках доктрины.

...