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