executar model em grupo
Um exemplo real:
meu controller precisar executar 2 models - um insert e um update
$Model.A-> insert();
$Model.B-> update();
//Model.A
#beginTransaction;
$statement = $pdo-> prepare( "INSERT ..." );
$statement-> execute();
#commit;
//Model.B
#beginTransaction;
$statement = $pdo-> prepare( "UPDATE ..." );
$statement-> execute();
#commit;
Na pratica, eu crio a instancia do model e executo a rotina, ou seja, prepara e executa cada um de uma vez.
No entanto passo por um problema...
Se fizer o inser e o update disparar um Exception... ferrou, a transação ja foi executada.
$Model.A-> insert(); // vai inserir mesmo que ModelB dispare um Exception
$Model.B-> update(); // vai inserir mesmo que ModelA dispare um Exception
no entanto a transação deveria ser:
try {
#beginTransaction;
$statement = $pdo-> prepare( "INSERT ..." );
$statement-> execute();
$statement = $pdo-> prepare( "UPDATE ..." );
$statement-> execute();
#commit;}catch{}
assim qualquer Exception evita que qualquer transação seja feita e posso dar rollback sem problema
como resolver isso? ha algum pattern?
Discussão (2)
Carregando comentários...