Montre la requête que tu as essayé de faire
Bonsoir,
Scénario:
j'ai un sujets, sur celui-ci j'ai plusieurs réponses, dont plusieurs d'un même utilisateur.
Question:
Comment faire que pour que $var1 possède la liste des mails sans doublon afin que je puisse envoyer un seul mail à tout le monde qui participe au sujet de mon forum?
4 réponses
Bonjour,
vu qu'on est dans la rubrique SQL, je pense que tu souhaites la réponse en SQL.
Voici un élément de réponse :
En supposant que tu est une table topic (qui contient les sujets) et une table com (qui contient les commentaires/réponses), tu pourrais faire une requête comme celle-ci :
SELECT
DISTINCT com.user_id AS id,
user.email AS email,
user.username AS user
FROM
com
LEFT JOIN user
ON user.id = com.user_id
WHERE com.topic_id = 1
La requête vas rechercher tous les utilisateurs uniques qui ont commenté sur le sujet dont l'id est 1 (WHERE com.topic_id = 1 ).
Il suffit que tu remplaces le 1 par ta variable contenant l'id du topic.
La requête va te renvoyer une liste de ce format :
[id: 1, email: toto@me.com, user: toto],
[id: 2, email: fred@house.net, user: fred],
...
]
Hello, essayes ça :
SELECT
com.user_id AS id,
user.email AS email,
user.username AS user
FROM
com
LEFT JOIN user
ON user.id = com.user_id
WHERE com.topic_id = 1
group by user.email
Au pire, tu dégages les doublons de ta base ;)
Le 'DISTINCT' étant une fonction fait pour, je vais plutôt utiliser celle-ci, mais merci quand même :D
cela donne donc:
$utilisateurs = DB::query(' SELECT
DISTINCT forum_messages.utilisateur_id AS id, utilisateurs.email AS email
FROM forum_messages
LEFT JOIN utilisateurs
ON utilisateurs.id = forum_messages.utilisateur_id
WHERE forum_messages.sujet_id = 5');
foreach ($utilisateurs as $u) {
echo $u->email.'</br>';}
C'est dommage, laravel possede deja une fonction distinct mais j'ai du mal à la comprendre pour réaliser la même opération.
$user = DB::table('users')->distinct()->get();
Merci à vous :D