Можно написать функцию CanI, которая будет вызываться перед выполнением запроса. Она будет проверять каким-то образом есть ли у пользователя право проводить данную операцию и если нет - бросать какой-нибудь AccessViaolationException. Тогда в самом SQL-е это предусматривать не надо будет.
а если доставать перед каждым запросом некий набо записей. типа SELECT arcticle_id FROM article where user_id=111; SELECT post_id FROM posts WHERE user_id=111.
формировать массив $resourses = [ "arcticles" => [2,5,8], "posts"=>[20,19] ] ит д. как вам вариант?
очень интересует как реализовать максимально грамотно и такоэ реализовано в известных проектах