je te remercie Nautile car ça répond exactement à ma question !
J'en profite pour répondre à l'autre partie  :
le "PHPname" de ma table utilisateur est le même que le champ de la
clé étrangére dans la table des news.
C'est cela qui provoquait mon erreur !
J'en apprend tout les jours avec Symfony ^^

cordialement,

On 25 juin, 09:31, nautilebleu <[EMAIL PROTECTED]> wrote:
> Salut,
>
> Une erreur courant lorsqu'on débute avec Propel est qu'il y a deux
> endroits où des jointures peuvent être définies, selon que l'on
> veuille hydrater le résultat avec les valeurs de la table jointe ou
> non.
>
> Si tu veux restreindre une liste de résultats selon les valeurs d'une
> autre table (par exemple, tous les utilisateurs de l'organisation X)
> mais que tu n'as pas besoin d'afficher des infos sur cette
> organisation, tu vas faire:
>
> $c = new Criteria();
> $c->addJoin(OrganizationPeer::ID, UserPeer::ORGANIZATION_ID) ;
> $c->add(OrganizationPeer::ID, $id) ;
> $users = UserPeer::doSelect($c) ;
>
> Ce requête va faire une jointure complète. Tu peux obtenir une
> jointure gauche en faisant:
>
> $c = new Criteria();
> $c->addJoin(OrganizationPeer::ID, UserPeer::ORGANIZATION_ID,
> Criteria::LEFT_JOIN) ;
> $c->add(OrganizationPeer::ID, $id) ;
> $users = UserPeer::doSelect($c) ;
>
> Si maintenant tu veux obtenir des infos sur les organisations de tes
> utilisateurs (indépendamment d'un filtrage sur l'organisation) sans
> avoir à faire une requête supplémentaire par utilisateur, tu dois
> faire un criteria du type:
>
> $c = new Criteria();
> $users = UserPeer::doSelectJoinOrganization($c) ;
>
> Ce faisant, l'objet User sera hydraté avec l'objet Organization et tu
> pourras faire un foreach en une seule requête.
>
> Il est bien sûr possible de combiner les deux pour filtrer les
> utilisateurs qui n'ont pas d'organisation (ou dans ton cas pour
> trouver les articles sans auteurs)
>
> Nautile
>
> On 23 juin, 11:06, simon <[EMAIL PROTECTED]> wrote:
>
> > Merci de ta réponse.
> > C'est vrai que pour ce cas utiliser un utilisateur générique est
> > possible mais j'aimerai savoir si justement il est possible d'utiliser
> > des left join avec un pager et surtout : Pourquoi j'ai une erreur
> > lorsque je veux utiliser la méthode "doSelect"
> > avec un clé étrangére dans la table.
> > merci !
>
> > On 22 juin, 18:57, "Olivier BALAIS" <[EMAIL PROTECTED]>
> > wrote:
>
> > > Bonjour,
>
> > > Plutôt que de mettre la clé étrangère à nul j'aurai créé un utilisateur
> > > factice qui prend en charge les news qui n'ont plus d'auteurs. Un peu 
> > > comme
> > > l'utilisateur anonyme/invité dans beaucoup d'applis Web.
> > > En tous les cas cela réglerai une partie de ton problème sans avoir à
> > > changer ta base
>
> > > -----Message d'origine-----
> > > De : [email protected] [mailto:[EMAIL PROTECTED] De la
> > > part de simon
> > > Envoyé : vendredi 22 juin 2007 17:28
> > > À : Symfony-fr
> > > Objet : [symfony-fr] sfPropelPager et LEFT JOIN
>
> > > Bonjour,
>
> > > Mon problème concerne un système de news.
> > > Voila j'ai une table avec des news et une clé étrangére pointant vers
> > > un utilisateur (d'une autre table)
> > > A la suppression d'un utilisateur, cet clé étrangére est mise à NULL.
>
> > > Je cherche à afficher les news avec sfPropelPager et un code très
> > > similaire a celui trouvé dans Askeet.
> > > Le problème est que si je laisse la méthode ($pager->setPeerMethod)  à
> > > "doSelect" il me dit qu'il ne veut pas redéfinir une méthode :
>
> > > Fatal error: Cannot redeclare BaseNews::setUtilisateur() in /home/
> > > simon/projet/www/lib/model/om/BaseNews.php on line 481
>
> > > Et si j'utilise "DoSelectJoinUtilisateur"  il ne m'affiche plus les
> > > news ou la clé étrangére est NULL.
>
> > > Je cherche donc à faire un LEFT JOIN afin de retenir toutes les news
> > > et les utilisateurs si nécessaire. Seulement je ne sait pas si cela
> > > est possible. (il n'y a pas de méthode peer du style
> > > "doSelectLeftJoinUtilisateur" et si j'ajoute un "left join" sur
> > > l'objet Criteria du pager ça ne change rien )
>
> > > dois-je changer ma base ou y-a-t'il une solution ?
>
> > > Merci de vos réponses ! :)


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