У меня проблема с проверкой. В доктрине 1 я использовал это:
if ($model->isValid()) {
$model->save();
} else {
$errorStack = $model->getErrorStack();
...
}
и в $errorStack я получил имя столбца и сообщение об ошибке. Но в Doctrine 2 я могу использовать только это:
Организация
/**
* @PrePersist @PreUpdate
*/
public function validate()
{
if ($this->name == null)) {
throw new \Exception("Name can't be null");
}
}
Контроллер:
try {
$user = new \User();
//$user->setName('name');
$user->setCity('London');
$this->_entityManager->persist($user);
$this->_entityManager->flush();
} catch(Exception $e) {
error_log($e->getMessage());
}
но у меня есть две проблемы с ним:
- не знаю какая колонка?
- я не хочу проверять уникальность вручную
Если я пропущу проверку () из объекта, уникальный будет пойман (из этого error.log)
Unique violation: 7 ERROR: duplicate key value violates unique constraint "person_email_uniq"
но, например, пользователь сохраняет 2 записи, и первая неверна, но вторая действительна, после первого сохранения EntityManager закроется, и я не могу сохранить вторую (хорошую) запись из-за того, что «EntityManager закрыт».
Какое лучшее решение для этой проблемы?