Suggestion d'ami à suivre

a marqué ce sujet comme résolu.

Salut à tous,

Je viens vers vous car je sèche complètement pour finaliser ma requête.

J'ai une table Users : id | pseudo |avatar

puis une table "friends": id |user_from | user_to user_to correspond à la personne à suivre.

maintenant je bosse sur ma requête qui fonctionne nickel sauf que si l'un de mes amis est amis avec un de mes amis (PAN) alors il va être proposé dans la liste. Cependant vu que je suis déjà ami avec c'est inutile.

voilà ma requête sous un MVC maison, mais facile à comprendre je pense :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<?php
            $this->loadModel('Users_friends');
            $d['follow'] = $this->Users_friends->find([
                'fields'    =>  'U.pseudo,U.id as user_id,U.avatar',
                'join'      =>  [
                    'users_friends AS F2'   =>  "Users_friends.user_to =  F2.user_from",
                    'users AS U'            =>  'U.id = F2.user_to'
                ],
                'conditions'=> "F2.user_from != $id AND Users_friends.user_from = $id",
                'limit'     =>  '0,10',
                'group_by'  =>  'U.id'
            ]);

Merci d'avance pour votre aide, j'ai mal à la tête ^^

+0 -0

maintenant je bosse sur ma requête qui fonctionne nickel sauf que si l'un de mes amis est amis avec un de mes amis (PAN) alors il va être proposé dans la liste. Cependant vu que je suis déjà ami avec c'est inutile.

Liste de quoi? d'ami? il est donc proposé deux fois dans ta liste?

Salut !

Je note que tu ne sembles pas tenir compte de user_to dans ta condition. Il faudrait éviter justement que tes amis s'y retrouvent, et pour ça, je pense qu'ajouter quelque chose comme AND F2.user_to NOT IN ([la liste d'IDs de tes amis]) pourrait être sinon la solution, au moins t'aider.

Note que je me pose quand-même la question : si tu es ami avec une autre personne, mais que c'est elle qui t'a demandé, je suppose que ton ID apparaît dans user_to, et non user_from, ou tu "dédoubles" les enregistrements pour que les liens d'amitié aillent "dans les deux sens" ?

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte