// Model:
class UserModel
{
function getUser($id){return $entityManager->find('User', $id);}
function saveUser($user)
{
/*Здесь проверка на дубликаты e-mail-а и мое исключение;*/
$entityManager->persist($user); // в случае TrackingPolicy = DEFERRED_EXPLICIT
}
}
// Controller:
$model = new UserModel;
$user = $model->getUser(1);
$user->setEmail('duplic@te');
$model->saveUser($user); // вот здесь должно вылететь мое исключение о дубликате
// Later in View:
$model = new UserModel;
$user = $model->getUser(1);
echo $user->getEmail(); // напечатан неверный e-mail пользователя
// Later:
$entityManager->flush();
$user1 = $entityManager->find('User', 1);
// ...
$user2 = $entityManager->find('User', 1);
// ...
catch (...)
{
$entityManager->detach($user1)
}
// ...
$user2->setOther('Other');
$entityManager->flush();