Mysql 多对多模型之间的查询
目前,我有两个模型,通过联接表具有多对多关系Mysql 多对多模型之间的查询,mysql,ruby-on-rails,Mysql,Ruby On Rails,目前,我有两个模型,通过联接表具有多对多关系 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 h
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
我的问题是。
由于我的交易id和场馆id仅在加入表中,交易场馆,由于我没有每个车型的id,如何在交易和场馆之间查询?例如,如果我需要查询场馆特定地点内提供的交易,我该如何查询?
或者,我想询问我的交易地点
对于新手问题,我很抱歉,因为我对rails还很陌生。谢谢大家! 您有
@deal=deal.find(2)
现在,你需要
@venues = @deal.venues
要查看SQL查询,您需要
puts @deal.venues.explain
文档首先,通常当人们说Rails中的多对多关系是他们的意思时。你在利用关系。通常情况下,这是建立多对多模型的正确方法,只是要确保你对事物的本来面目进行了描述 Rails(特别是ActiveRecord)将在每个表上自动创建一个
id
列。所以你在交易
和场馆
上有id
,你可以这样做:
venue_id = <some-id>
venue = Venue.find(venue_id)
# get all the deals for the venue
deals = venue.deals
场馆标识=
地点=地点。查找(地点\u id)
#获取场地的所有交易
deals=地点.交易
我想可能有点小错误。例如,在Deal中,它没有场馆id。我尝试了deals=Deal.where(场馆id:venue\u id),但它不起作用。此外,deals=venture.deals也不起作用。显然,我需要对@venture=venture.find(venture\u id)进行“编码”,然后是deals=@venture.deals,这样就可以了。我能知道为什么会这样吗?
venue_id = <some-id>
venue = Venue.find(venue_id)
# get all the deals for the venue
deals = venue.deals