Moin Baba,
Vorstellbar wäre auch so etwas... […]
Da solltest du direkt über ein ORM nachdenken. Da kann man das viel schöner lösen, in Rails ist z.B. das hier ein von mir häufig eingesetztes Feature:
@threads = CfThread.where(forum_id: current_forum.forum_id)
unless current_user.root?
@threads = @threads.where(deleted: false)
end
@threads = standard_permissions(@threads)
@threads = @threads.order('created_at DESC').all
standard_permissions
verändert das Query-Objekt dann nochmal, indem es einen eager load hinzufügt und auf Zugriffsrechte prüft:
def standard_permissions(query)
return query.preload(:forum).where("EXISTS(SELECT user_id FROM forum_permissions WHERE permission = 'read' AND user_id = ?)", current_user.user_id)
end
Solche ORMs gibt es auch für PHP, z.B. Doctrine.
LG, CK
P.S.: Disclaimer: das ist nicht der wirklich verwendete Code, nur das Schema wie ich das handhabe ;)