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
-~----------~----~----~----~------~----~------~--~---

Répondre à