Besoin d'aide ?

Additionner et Afficher les notes de toutes les publications appartenant à un utilisateur.

Avatar de Davidwhisper
Davidwhisper

Bonjour Je devellope une application dans laquelle les publications de utilisateurs peuvent recevoir des notes. Devant le nom de chaque utilisateur, Je souhaite Additionner et Afficher la somme des notes de toutes ses publications qui ont recu des notes. Voici les champs de La TABLE ( post_user ) - id - created_at - updated_at - note - user_id - post_id

Je n'ai aucune idée de comment m'y prendre pour la requete SQL , j'avoue aussi que je suis nouveau dans LARAVEL. (cette application est inspirée du TUTO GALLERIE PHOTOS de BESTMOMO) Merci...

Posté il y a 1 an
Avatar de KarimKouyate
KarimKouyate

je te conseille de te former doucement en laravel avant de ta lancer dans un projet sinon tu auras beaucoup de blocus

Posté il y a 1 an
Avatar de Davidwhisper
Davidwhisper

ok merci du conseil

Posté il y a 1 an
Avatar de MakoubaSetho
MakoubaSetho

Le problème rencontré est avant tout SQL, A toi de voir si tu es assez à l'aise pour l'adapter en Laravel ensuite.

Suivant ma logique,
Je concidère que :

  • La table **post_user ** donne la note attribuée par un utilisateur (user_id) sur une publication (post_id)
  • La table post donne la publication d'un utilisateur (user_id)

La requête SQL que tu recherches se profil donc sous une forme telle que :

Séléctionner toutes les notes (table : post_user) où l'auteur de la publication (obtenu via : post_id ; user_id) est égal à l'auteur désigné -> Sommer les résultats

---------------------------- ------- ALERTE SPOILER ------------- ---------------------------- ---------------------------- ---------------------------- ---------------------------- ---------------------------- ---------------------------- ----------------------------

(Nb : La fonction "SUM" existe en SQL, mais tu devra joindre tes tables entres elles pour obtenir l'auteur d'une publication ... : << SELECT SUM(note) AS somme_notes FROM post_user INNER JOIN post ON post_user.id = post.id WHERE post.user_id = 9 >>)

En Laravel (Blade), tu aura plus quelque chose sous la forme :

DB::table('post_user ')
    ->join('post', 'post_user.post_id', '=', 'post.id')
    ->where('post.user_id', '=', 9)
    ->sum('post_user.note');

Ou encore avec une variable et un "as" :

$total_note = DB::table('post_user')
                     ->select(DB::raw('sum(post_user.note) as somme_notes'))
                    ->join('post', 'post_user.post_id', '=', 'post.id')
                    ->where('post.user_id', '=', 9)
                     ->get();

Ceci renseignant la variable $total_note de la somme des notes données à une publication dont l'auteur à l'ID 9 Et lui donne le label (la clé) "somme_notes" Ainsi $total_note = "somme_notes" { 42 }

Posté il y a 1 an

Vous ne pouvez pas répondre à ce sujet.