簡體   English   中英

Rails一對多關聯查詢

[英]Rails One-to-many association Query

楷模:

class User < ActiveRecord::Base
  has_may :friends
end

class Friend < ActiveRecord::Base
  belongs_to :user
end

表格:

表格圖片

要查詢:

都具有的users

friends.name = "Lily" 
# and 
friends.name = "Steven"

我想要按Model Where Query這樣:

User.joins(xxx).where(xxx)

有什么辦法嗎?

我認為

User.joins(:friends).where("friends.name = 'Lily' OR friends.name = 'Steven'")

會做你想要的

SELECT users.id, users.name 
FROM users 
INNER JOIN friends ON users.id = friends.user_id 
WHERE friends.name IN ('Lily', 'Steven') 
GROUP BY users.id 
HAVING COUNT(*) = 2;

ActiveRecord查詢

names = ['Lily', 'Steven']

User.select('users.id, users.name').joins(:friends).where(friends: { name: names }).group('users.id').having("COUNT(*) = #{names.count}")

SQLFiddle

上面的查詢將僅向您返回與"Lily""Steven"成為好友的用戶

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM