2016-06-02 10 views
1

Ich habe ein Problem mit dem Rendern eines Menüs, das Rollen und Benutzer verwendet. Ich benutze Laravel 5.2 (nur für Informationen und vielleicht eine einfache Lösung :)) Was ich versuche zu erreichen ist, den aktuellen Benutzer zu bekommen, mit den Rollen, die Aktionen hat. Das Problem ist: 2 verschiedene Rollen können die gleiche Methode enthalten und ich möchte sie nicht zweimal aber nur einmal erhalten. Wie kann ich das leicht erreichen?Render-Menü basierend auf Benutzer, Rollen und Methoden

Kann mir bitte jemand helfen?

Meine Tabellenstruktur:

- users 
    -- id 
    -- email 

- roles 
    -- role_id 
    -- title 

- methods 
    -- id 
    -- title 

- users_roles 
    -- user_id 
    -- role_id 

- methods_roles 
    -- role_id 
    -- method_id 

Antwort

1

Diese Abfrage sollten Sie alle Methoden geben (keine Duplikate) für den Benutzer mit $your_user_id:

select * 
from methods m 
inner join methods_roles mr on m.id = mr.method_id 
inner join user_roles ur on ur.role_id = mr.role_id 
where ur.user_id = $your_user_id 
group by m.id 
+0

Das funktioniert wie ein Charme !!! Vielen Dank! Noch eine Frage: Die Methode enthält "Controller", Controller "Module", Module "Base_Pfad", kann ich diese als mehrdimensionales Array anhängen? –

+0

Dies ist ein anderes Problem und Sie sollten eine weitere Frage damit erstellen (nachdem Sie meine Antwort upvote und akzeptieren, damit andere wissen, dass diese Frage bereits eine Lösung hat) –

Verwandte Themen