Autour de Laravel

Récupérer les publications, les utilisateurs et les commentaires associés à chaque publication

Avatar de ciol07
ciol07

Hello ! j'ai ce code qui fonctionne très bien mais ne récupère que les publications qui ont des commentaires "true" c'est à dire >= 1.

Route::get('/', function () {
    $publishes = Publish::join('comments as c', 'publishes.id', '=', 'c.publish_id')
    ->join('users as u','u.id', '=', 'publishes.user_id')
    ->selectRaw('publishes.*, count(c.id) as numComments,u.name,u.lastname,u.avatar,u.id as usser_id')
    ->where('publishes.state','publish')
    ->groupBy('publishes.id')
    ->with('user')
    ->orderBy('publishes.updated_at','DESC')
    ->get();
    
    return view('accueil',
                [
                'publishes' => $publishes
                ]);
});

Mon souhait c'est de récupérer toutes les publications associés à des utilisateurs et compter les commentaires de chaque publication. Même 0 commentaire doit être afficher.

Quelqu'un peut m'aider ?

Avatar de CinquièmeDimension
CinquièmeDimension

Salut,

Des leftJoin() plutôt, que des join(), peut-être..

Avatar de ciol07
ciol07

Merci CinquièmeDimension

ça marche

Route::get('/', function () {
    $publishes = Publish::leftjoin('comments as c', 'publishes.id', '=', 'c.publish_id')
    ->leftjoin('users as u','u.id', '=', 'publishes.user_id')
    ->selectRaw('publishes.*, count(c.id) as numComments,u.name,u.lastname,u.avatar,u.id as user_id')
    ->where('publishes.state','publish')
    ->groupBy('publishes.id')
    ->with('user')
    ->orderBy('publishes.updated_at','DESC')
    ->get();
    
    return view('accueil',
                [
                'publishes' => $publishes
                ]);
});

Vous ne pouvez pas répondre à ce sujet.