Amélioration Query Builder

Par Onouriis, il y a 10 ans


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 ?

3 réponses

Onouriis, il y a 10 ans

J'utilise déjà les relations Eloquent justement. Mais je ne sais pas faire ce que je cherche autre qu'avec un leftJoin.

Onouriis, il y a 10 ans

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)