rubyonrails模型与表连接

vsmadaxz  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(327)

在我的数据库中,我创建了三个表,分别是user、user\u group、user\u group\u info。
我想做类似这样的查询,但我不知道如何连接这两个表。

SELECT * FROM user AS u
INNER JOIN user_group AS ug ON u.user_group_id=ug.user_group_id
INNER JOIN user_group_info AS ugi ON ug.user_group_id=ugi.user_group_id
WHERE ugi.language_id = 1

用户模型

class User < ApplicationRecord
    self.table_name = "user"
    self.primary_key = "user_id"
    belongs_to :user_group
end

用户组模型

class UserGroup < ApplicationRecord
    self.table_name = "user_group"
    self.primary_key = "user_group_id"
    has_many :user
    belongs_to :user_group_info
end

usergroupinfo模型

class UserGroupInfo < ApplicationRecord
    self.table_name = "user_group_info"
    has_many :user_group
end
xdnvmnnf

xdnvmnnf1#

您可以使用activerecord来创建查询,而不是手动创建查询。试试这个:

User.joins(user_group: :user_group_info).where(user_group_infos: { language_id: 1 })

这应该转化为您在问题中给出的示例查询。
你从 User 你加入了 user_groups . 通过 user_groups ,你加入 user_group_infos . 最后,在 user_group_infos . 有几种方法可以写出来。

where("user_group_infos.language_id = ?", language_id)

# or

where(user_group_infos: { language_id: language_id })

相关问题