Слава, думаю это всеравно 2 запроса, как не крути, даже сырым джоином их как вам надо не соединить) у меня была похожая задача (вытащить товары и серии товаров для редактирования свойства товаров пачкой, если выбрать серию - чтобы провалились все товары серии) и пришлось делать 2 запроса к разным моделям, мержить в одну коллекцию и отправлять на фронт
Т.е. вам нужно получить кошек и собак с их релейшинами? Или как?) Это же разные модели, они должны быть как-то связанны для их выборки сразу (например полиморфным отношением к какой-то другой сущности), иначе придется деркать кошек, потом собак
По скрытому инпуту - делал добавление картинок перетаскиванием, инпут скрываем, а лейбл стилизуем, либо кастомные чекбоксы и радиокнопки, тоже инпут скрыт, а лебл нужен для взаимодействия
Ну во первых, чтобы получить категорию - ее нужно куда-то сохранять (дата атрибут, input type=hidden, ...), дальнейшее получение и сопоставление ролей категории зааисит от первого пункта)