поточу что нужно использовать JOIN... Если запрос не сложный и данных не много тогда не критично, но если запрос сложный и большие объемы данных он скажется на скорости выполнения....
так можно же собрать на локале полноценно через композер, а потом уже выливать на целевой хостинг. Для Вас как для разработчика это будет гораздо проще чем выкачивать и подключать все зависимости в ручную
у модуля нет параметра name, да он и не нужен, т.к. у него есть параметр ID который определяется на момент подключения модуля к приложению. По нему можно идентифицировать модуль и т.п. Ну а на счет доступа - в чем проблема подключить к behaviors модуля фильтр AccessControl ?
если хотя бы одно поле NULL то такой и результат и должен быть, вообще использовать значение null по умолчанию не очень хорошая практика, или используйте проверку IFNULL
для того что бы убрать лишние запросы просто включите кеширование (@bitver привет ссылку на эту темы) , а если у Вас какие-то супер особенный алгоритм форматирования данных - тогда его стоит поместить в отдельный хелпер или расширить функционал стандартного форматера.
если нужно исключить несколько тогда нужно использовать конструкцию
->andWhere(['not in', 'status', ['wait', 'hide', 'ban']])
если нужно искать по значению NULL, тогда
->andWhere(['is not', 'text', NULL])