J'ai 3 tables : "items", "faq" et une table de jointure : "item_faq". La table item_faq contient la relation ainsi qu'une colonne order qui permet de classer les faqs par item.
La base de données contient actuellement un total de 5 faqs. La table item_faq contient un total de 9 lignes reliant ces 5 questions à plusieurs articles.
Le contexte est que l'administrateur peut créer/modifier un élément et sélectionner les faq qui seront incluses, ainsi que leur ordre.
Dans la vue de création/modification de l'administrateur de l'article, j'ai besoin d'afficher toutes les FAQ et de pouvoir cocher celles que je veux inclure.
Dans mon contrôleur, je fais une jonction à gauche comme ceci :
$faqs = \App\Faq::leftJoin('item_faq', 'faq.id', '=', 'item_faq.faq_id')->get();
Je suis dd($faqs) pour tester ce qui est retourné et j'obtiens 9 objets. C'est là que se situe mon problème : J'ai besoin qu'il retourne les 5 faqs et s'il y a un item_faq qui est lié à cet item et faq alors la case faq est cochée.
Schéma :
Elément (40+ lignes dans la base de données) : identifiant, autres champs
Faq (il y a 5 lignes existantes dans la base de données) : id, question, réponse, autres champs
item_faq (9 lignes dans la base de données) : champs item_id, faq_id, order, date
L'objet et la FAQ sont tous deux dans un rapport d'interdépendance (many_to_many)
Ce que je veux récupérer
5 faq's et s'il existe une liste item_faq pour l'article et la faq, il cochera cette case.