gpt4 book ai didi

mysql - 多对多模型之间的查询

转载 作者:行者123 更新时间:2023-11-28 23:52:02 25 4
gpt4 key购买 nike

目前我有 2 个模型,通过连接表具有多对多关系。

class Deal < ActiveRecord::Base
has_many :deal_venues, :dependent => :destroy
has_many :venues, through: :deal_venues
end

class Venue < ActiveRecord::Base
has_many :deal_venues, :dependent => :destroy
has_many :deals, through: :deal_venues
end

class DealVenue < ActiveRecord::Base
belongs_to :deal
belongs_to :venue
end

这是我对这些模型的架构

create_table "deals", force: true do |t|
t.string "name_of_deal"
t.string "type_of_deal"
t.string "description"
t.date "start_date"
t.date "expiry_date"
t.string "t_c"
t.boolean "pushed"
t.boolean "redeemable"
t.boolean "multiple_use"
t.string "image"
t.datetime "created_at"
t.datetime "updated_at"
t.string "location"
end

create_table "venues", force: true do |t|
t.datetime "created_at"
t.datetime "updated_at"
t.string "location"
end

create_table "deal_venues", force: true do |t|
t.integer "deal_id"
t.integer "venue_id"
t.datetime "created_at"
t.datetime "updated_at"
end

我的问题是这样的。由于我的 deal_id 和 venue_id 仅在连接表 deal_venues 中,我没有每个模型的 ID,如何在交易和地点之间进行查询?
例如,如果我要查询场馆特定位置内提供的优惠,我该怎么做?
或者,我想查询我的交易所在的位置。

对于新手问题,我很抱歉,因为我是 Rails 的新手。谢谢!

最佳答案

首先,通常当人们在 Rails 中说多对多关系时,他们的意思是 has-and-belongs-to-many .您正在使用 has-many-through关系。通常情况下,它是建立多对多模型的正确方法,只要确保你称其为事物本身即可。

Rails(特别是 ActiveRecord)会自动在每个表上创建一个 id 列。所以你在 dealsvenues 上有 id,你可以这样做:

venue_id = <some-id>

venue = Venue.find(venue_id)

# get all the deals for the venue
deals = venue.deals

关于mysql - 多对多模型之间的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32463764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com