Как получить данные из нескольких таблиц с помощью одного запроса 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 юридическое лицо присоединилось к юридическому лицу

Дайте знать, если это помогло вам, или если вам нужно больше деталей. Ура!

Другие вопросы по тегам