J'ai le code suivant:Comment accéder aux données de la base de données en cas d'exception?
my $savepoint = $c->db->txn_scope_guard;
return $self->render('subnet/create', error => [ create => [email protected] ],
servers => $self->rows('Server')->lookup,
) unless $subnet = eval{ $self->rows('Subnet')->create($subnet) };
$savepoint->commit;
Ici rows
est aide Mojolicious qui donne accès aux données.
sub model {
my($c, $table_name) = (shift,shift);
return $c->db->resultset($table_name);
}
Et ->db
est également aide:
sub db { return $schema
//= DBIx::Class::Schema->connect($DB->{ DSN }, @$DB{ qw/ USER PASS/}, {
AutoCommit => 1,
RaiseError => 1,
quote_char => '"',
})
});
Lorsque je crée $subnet
et contrainte unique se produit (ici a quelle que soit la contrainte se produit, en fait en cas d'exception) j'ai eu l'erreur:
C'est quand je prends exception avec eval{ ... }
la transaction en cours est interrompue et je ne peux pas faire $self->rows('Server')->lookup
Existe-t-il un moyen d'accéder aux données du serveur après exception se produire?
Pourquoi ne faites-vous pas la recherche avant la création? – xxfelixxx
parce que je n'ai pas besoin de rechercher des données lorsque l'utilisateur 'POST' sa sélection. Je n'ai besoin de rechercher que lors du rendu du formulaire 'subnet/create'. –