Doğrulama ile ilgili bir sorunum var. Doktrin 1'de ben bu kullandı:Doctrine 2 doğrulama
if ($model->isValid()) {
$model->save();
} else {
$errorStack = $model->getErrorStack();
...
}
$ ve errorStack i sütun adı ve hata mesajı var. Ama Doktrin 2'de bunu sadece kullanabilirsiniz:
Varlık
/**
* @PrePersist @PreUpdate
*/
public function validate()
{
if ($this->name == null)) {
throw new \Exception("Name can't be null");
}
}
Denetleyici:
try {
$user = new \User();
//$user->setName('name');
$user->setCity('London');
$this->_entityManager->persist($user);
$this->_entityManager->flush();
} catch(Exception $e) {
error_log($e->getMessage());
}
ama iki sorun var bunu katiyen:
- bilmiyorum hangi sütun
- i benzersiz kontrol etmek istemiyoruz elle
i (bu error.log itibaren) catched edilecek benzersiz varlıktan validate()
Unique violation: 7 ERROR: duplicate key value violates unique constraint "person_email_uniq"
ancak örneğin kullanıcı için atlarsanız 2 kayıt kaydedin ve birincisi yanlıştır, ancak ikincisi, EntityManager'ın ilk kaydedilmesinden sonra kapanacaktır ve "EntityManager kapalı" olduğundan dolayı ikinci (iyi) kaydı kaydedemiyorum.
Bu sorun için en iyi çözüm hangisidir?