Как получить данные из нескольких таблиц с помощью одного запроса SQL в Ханами?
У меня есть модели ханами User
а также UserInfo
который имеет has_one
ассоциация.
Репозитории выглядят следующим образом:
class UserInfoRepository < Hanami::Repository
end
class UserRepository < Hanami::Repository
associations do
has_one :user_info
end
end
Вопрос: к кому я могу присоединиться и загрузить обе таблицы одним запросом? (Я ищу что-то похожее на Rails includes
).
Пока я пробовал
def users_with_info
users.join(:user_info)
end
Это делает объединение, но не выбирает столбцы из user_infos
Таблица.
Заранее спасибо.
2 ответа
Когда вы выбираете данные через репозиторий в Hanami, результирующий набор отображается на сущности. По умолчанию UserRepository
будет отображаться на User
юридическое лицо. Я предполагаю, что эта сущность не имеет атрибутов для столбцов из user_info
,
Что вам нужно сделать, это создать сущность, которая может содержать данные, которые вы хотите получить из базы данных, а затем вызвать .as(ThatEntityYouCreated)
на наборе результатов. Например,
def users_with_info
users.join(:user_info).as(UserWithInfo)
end
Я полагаю, что мы столкнулись с этой проблемой с моим товарищем по команде по одному из наших проектов в Ханами, и вот как мы решили его.
В основном мы обошли репозиторий Hanami, перейдя прямо к основному отношению ROM, используя ROM::Relation#wrap
для того, чтобы получить наш User
юридическое лицо присоединилось к юридическому лицу
Дайте знать, если это помогло вам, или если вам нужно больше деталей. Ура!