Tengo un problema con la validación. En Doctrina 1 i utilizado este:Validación de Doctrine 2
if ($model->isValid()) {
$model->save();
} else {
$errorStack = $model->getErrorStack();
...
}
y en $ errorStack tengo el nombre de la columna y el mensaje de error. Pero en Doctrina 2 Puedo utilizar simplemente que:
Entidad
/**
* @PrePersist @PreUpdate
*/
public function validate()
{
if ($this->name == null)) {
throw new \Exception("Name can't be null");
}
}
controlador:
try {
$user = new \User();
//$user->setName('name');
$user->setCity('London');
$this->_entityManager->persist($user);
$this->_entityManager->flush();
} catch(Exception $e) {
error_log($e->getMessage());
}
pero tengo dos problemas que la pizca:
- no sé cual columna?
- no quiero comprobar manualmente única
Si me salto validar() desde la entidad única será atrapado (a partir de este error.log)
Unique violation: 7 ERROR: duplicate key value violates unique constraint "person_email_uniq"
pero por ejemplo el usuario guarde 2 registros y el primero es incorrecto, pero el segundo válido, después del primer guardado se cerrará EntityManager y no puedo guardar el segundo (buen) registro debido a "El EntityManager está cerrado".
¿Cuál es la mejor solución para este problema?