Окей, если планируешь many-many, делай сразу с промежуточной таблицей. Если не планируешь - делай fk в Article. Тут тебе трудно помочь, все зависит от требований.
Александр Макаров: спасибо, вроде этого я и написал вслед за вами. Но бекенд и фронтенд делать из модулей? Или же опять вариант с папками /controllers/article/CommentController, /controllers/catalog/CityController?
Александр Макаров: где тогда стоит их хранить? Я представляю это так. Есть наборы моделей (условно модули), с которыми надо работать в бекенде и фронтенде. В следствии приходит решение раскидать модели по папкам /common/models/moduleName/modelName и использовать неймспейсы. Но решение с папками не по феншую кажется, когда есть модули.
Александр Макаров: в дальнейшем планируются другие модули, все взаимодействуют между собою, думаю написать интерфейсы или работать напрямую с классами для этого. Но взаимодействие будет. Также необходимо удобное управление в админки, с возможностью понимать с каким модулем работаешь, например, комментарии будут в нескольких модулях. Также API в дальнейшем, для него бекенд не требуется.
Модули взаимодействуют между собою, правильно ли будет создать модули в common, затем в приложениях наследущие модули с контроллерами, представлениями и т.п.?