Bonjour,
J'ai encore une demande pour savoir comment vous pratiquez. J'ai une table posts
qui contient un type_id
et qui est relié à la table types
qui contient un category_id
qui relie à la table categories
.
Je souhaite paginer tous les posts qui ont category_id = 3
.
Actuellement je fais :
$posts = Post::with(['type.category'])
->select('posts.*')
->leftJoin('types', 'type_id', '=', 'types.id')
->leftJoin('categories', 'category_id', '=', 'categories.id')
->where('category.id', 3);
$posts = $posts->paginate(25);
Mais du coup je ne trouve pas ça très propre ni très efficace. Existe-t'il des manières plus propres de faire ça ? Si oui, lesquelles ?
Hello,
Je te conseil d'utiliser les relations Eloquents : https://laravel.com/docs/5.2/eloquent-relationships (plus besoin de left Join dans ton cas par exemple).
J'ai honte depuis le temps que je cherche mais j'ai réussi à résoudre mon problème en retournant une n-ième fois sur ton lien. (whereHas
is my friend now)
J'utilise déjà les relations Eloquent justement. Mais je ne sais pas faire ce que je cherche autre qu'avec un leftJoin
.