Besoin d'aide ?

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

  • Avatar de Davidwhisper
    Membre depuis :
    19/03/2019
    Messages :
    3

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

  • Avatar de KarimKouyate
    Membre depuis :
    24/05/2019
    Messages :
    8

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

  • Avatar de Davidwhisper
    Membre depuis :
    19/03/2019
    Messages :
    3

    ok merci du conseil

  • Avatar de MakoubaSetho
    Membre depuis :
    16/10/2017
    Messages :
    27

    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 }

Vous ne pouvez pas répondre à ce sujet.