Re: [Galette-discussion] Remise à NULL de trans_id dans les contributions

[ Thread Index | Date Index | More lists.galette.eu/users Archives ]


Le 24 septembre 2017 22:00:43 GMT+02:00, Nicolas Guillerm <guillerm.nicolas@xxxxxxx> a écrit :
>Bonjour,
>
> 
>
>J’ai commencé à naviguer dans la nouvelle version 0.9rc1, mais j’ai pu
>constater qu’il n’y a pas eu de modification sur un point de c’est
>découvert ressemant en faisant un peu de nettoyage dans notre base de
>données :
>
>Lors de l’effacement d’un adhérent, les transactions et contributions
>qui lui sont liées sont bien effacées. Par contre comme une transaction
>peut contenir des contributions d’autre adhérents, ces contributions se
>retrouvent avec une valeur trans_id inconsistante, alors qu’elle
>devrait être remise à NULL.
>
> 
>
>J’ai essayé d’intercaler une requete UPDATE dans Members.php, mais je
>ne suis pas très à l’aise avec $zdb.
>
>Je ne sais pas comment faire une recheche dans une recheche :
>
> 
>
>//delete contributions
>
>$del_qry = $zdb->delete(Contribution::TABLE);
>
>$del_qry->where->in(
>
>     self::PK, $list
>
>);
>
>$del = $zdb->execute($del_qry);
>
> 
>
>+//***NG: Update trans_id of other contributions
>
>+$update = $zdb->update(Contribution::TABLE);
>
>+$update->set(
>
>+     array(Transaction::PK => null)
>
>+)->where->in(Transaction::PK,
>$zdb->select(Transaction::TABLE)->where->in(self::PK, $list));
>
>+);
>
>+$del = $zdb->execute($update);
>
> 
>
>//delete transactions
>
>$del_qry = $zdb->delete(Transaction::TABLE);
>
>$del_qry->where->in(self::PK, $list);
>
>$del = $zdb->execute($del_qry);
>
> 
>
> 
>
>Ou alors, il faut d’abord extraire sous forme de liste toutes les
>transactions à effacer, pour mettre à jour les contributions. Puis on
>utilise cette même liste pour effacer les transactions.
>
> 
>
>Cordialement,
>
>Nicolas Guillerm

Salut,

Je ne pense pas que ce souci ait été remonté auparavant. Pourrais tu ouvrir un ticket sur le tracker s'il te plaît ?

Je n'ai pas vraiment le temps et regarder çà de plus près, je pars en déplacement.

Je vois à priori 2 solutions :
- lister les transactions à modifier puis effectivement les mettre à jour,
- utiliser une jointure (si toutefois c'est possible).

Dans tous les cas, une contrainte devrait être posée sur la base pour éviter ça à l'avenir, et la mise à jour devra nettoyer ce qui est incorrect (après la 0.9 qui ne modifiera pas la base). 

++
Johan

--
Galette users discussions

http://galette.eu - http://galette.eu/documentation
http://bugs.galette.eu/projects/galette/

List documentation: https://listengine.tuxfamily.org/lists.galette.eu/users/


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/