N'existe pas de requête
Sep 27 2020
J'ai un problème avec une requête.
dans la table posts, j'ai posts.id, puis, dans la table reviews, j'ai posts_id (clé étrangère -> posts.id), reviews.id. Je veux interroger ces posts_id qui n'existent pas dans la table des critiques (post_id).
J'utilise des constructeurs de requêtes laravel. j'essaye comme ->
$r = DB::table('reviews') ->select(DB::raw('count(id) as rev_count, posts_id')) ->groupBy('posts_id') ->get(); foreach ($r as $rr) { $p = DB::table('posts')
->select('id')
->where('id', '!=', $rr->posts_id)
->get();
}
j'ai extrait avec succès la valeur. mais avec trop de complexité, peut-être buggy. s'il y en a une requête directe pour l'extraire?
Réponses
1 Sujitmohanty30 Sep 27 2020 at 19:03
Que diriez-vous d'utiliser not exists,
Requête SQL:
select *
from posts
where not exists
(select reviews.posts_id
from reviews
where reviews.posts_id = posts.id)
Requête équivalente laravel:
DB::table('posts')
->select('id')
->whereNotExists(function ($query) { $query->select("reviews.posts_id")
->from('reviews')
->whereRaw('reviews.posts_id = posts.id');
})
->get();
Il y a ce lien SO pourrait également vous être utile