bonjour colin,
definir une fonction __toString() permet de remplaer l'id par la valeur
retournée par ton toString() dans totn interface
je pense que c'est la bonne methose pour regler ton probleme
Colin a écrit :
> Bonjour,
>
>
> dans un module de backend, je souhaite utiliser un filtre sur une clé
> étrangère. Je suis arrivé à obtenir ce que je voulais pour
> l'affichage, cependant le filtre fait la recherche sur le champ ID de
> la table étrangère et non sur la référence étrangère que j'ai
> renseignée dans le schema.yml.
>
> Voici un extrait de mon schema.yml:
>
> db_courtiers:
> courtier_profil:
> _attributes: { phpName : CourtierProfil }
> id:
> courtier_id: { type: integer, index: true }
> ...
>
> courtier_histo_solde:
> _attributes: { phpName: CourtierHistoSolde }
> id:
> courtier_id: { type: integer, index: true, foreignTable:
> courtier_profil, foreignReference: courtier_id, onDelete: cascade }
> ...
>
> et un extrait de mon generator.yml :
>
> generator:
> class: sfPropelAdminGenerator
> param:
> model_class: CourtierHistoSolde
> theme: default
>
> list:
> peer_method: doSelectJoinCourtierProfil
> display: [courtier_profil, =_list_date, operation, _montant]
> filters: [courtier_id, date]
>
>
> A l'affichage dans le filtre, j'ai bien un select avec la liste des
> noms des courtiers (grâce à la méthode __toString de CourtierProfil).
> Cependant les valeurs des options ne prennent pas le courtier_id mais
> l'id de la table courtier_profil. Donc forcément les recherches ne me
> donnent pas le résultat attendu.
>
> Dans filters, si je met courtier_profil à la place de courtier_id
> (pour avoir comme dans display), je n'ai plus aucun select (logique,
> quoique j'aurais pensé que la jointure se ferait comme dans le display
> grâce peer_method).
>
> Alors j'ai créé un partial filter qui génère les selects avec les
> bonnes options, mais comme je vais devoir utiliser ce même filtre dans
> une dizaine de modules, j'ai pensé qu'il y avait peut-être une syntaxe
> possible dans le generator.yml pour que le filtre fasse de lui-même
> les bonnes jointures.
>
>
> Pour finir il y a quelque chose que je ne comprend pas : si j'enlève
> la ligne peer_method, d'autres requêtes sont donc nécessaires pour
> exécuter __toString() de CourtierProfil mais là non plus la "jointure"
> n'est pas correcte : elle ne se fait pas sur courtier_id mais sur l'id
> de la table courtier_profil... Ce que je ne comprend pas c'est
> pourquoi la jointure déclarée avec peer_method fonctionne alors que si
> je l'enlève, la jointure "en deux temps" sur courtier_profil n'est pas
> correcte. En d'autres termes, pourquoi faut-il que passer par
> peer_method pour respecter foreignReference que j'ai indiqué et qui ne
> correspond pas au champ id de foreignTable ?
>
>
> Merci d'avance pour vos explications, j'espère avoir été suffisamment
> clair...
>
>
> Bonne journée,
>
> Colin
>
> >
--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe Groupe "Symfony-fr"
de Google Groupes.
Pour transmettre des messages à ce groupe, envoyez un e-mail à
l'adresse [email protected]
Pour résilier votre abonnement à ce groupe, envoyez un e-mail à
l'adresse [EMAIL PROTECTED]
Pour afficher d'autres options, visitez ce groupe à l'adresse
http://groups.google.com/group/symfony-fr?hl=fr
-~----------~----~----~----~------~----~------~--~---