Laravel global query scopes were the answer I needed when working out how to deal with post types in a clean way.