Laravel France

Help Eloquent - Récupérer les posts les plus likés de la semaine précédente

Avatar de KMG
KMG

Bonjour à tous,

je m'en remet à vous, je suis en train de créer ma première application Laravel et cela fait quelques jours que je sèche sur une requête SQL, je ne vois toujours pas comment faire !

J'ai dans ma bdd une table Posts & une table Likes qui ont une relation one to many. Pour afficher les tendances sur mon blog je souhaite récupérer les posts les plus likés de la semaine précédente et si possible en deuxieme temps afficher uniquement ceux qui ont reçu un minimum de likes (+ de 5 par exemple) durant la semaine précédente.

Voici de manière épuré comment je récupère tous les posts avec leurs likes :

$posts = DB::table('posts')
->select('posts.id as id', DB::raw('COUNT(likes.id) as count'))
->join('likes', 'posts.id', '=', 'likes.posts_id')
->groupBy('posts.id')
->orderBy('count', 'DESC')
->limit(50)
->get();

J'arrive aussi à récupérer la liste de ceux qui ont reçu des likes la semaine précédente.

$trends = DB::table('posts')
->select('posts.id as id', DB::raw('COUNT(likes.id) as count'))
->join('likes', 'posts.id', '=', 'likes.posts_id')
->where('likes.created_at', '>=', $lastWeek)
->groupBy('posts.id')
->orderBy('count', 'DESC')
->limit(50)
->get();

**Seulement le COUNT de cette deuxieme requête me permet de récupérer uniquement les posts avec les likes de la semaine or je voudrais avec ces posts le total de likes pour chacun. **

Je ne sais pas vraiment comment procéder malgré mes nombreux essais, si je résume en premier lieu il faut récupérer les id de posts qui ont reçu des likes la semaine précédente puis avec ces id de posts récupérer leur likes totaux à chacun.

Avez-vous une idée vers laquelle me diriger / me renseigner pour mener à bien cette mission ? :)

Merci beaucoup d'avance

Posté il y a 2 mois
Avatar de CinquièmeDimension
CinquièmeDimension

Salut,

Alors j'ai jamais utilisé ça mais t'es-tu penché sur la méthode withCount() ==> https://laravel.com/docs/8.x/eloquent-relationships#counting-related-models

Posté il y a 2 mois

Vous ne pouvez pas répondre à ce sujet.