gpt4 book ai didi

sql - ActiveRecord:查找与某个值有关联的记录

转载 作者:太空宇宙 更新时间:2023-11-03 16:26:23 24 4
gpt4 key购买 nike

我有以下关联:

ModelA < ActiveRecord::Base
belongs_to :model_b
end

ModelB < ActiveRecord::Base
has_many :model_as
end

假设有 model_a.foo 和 model_b.bar 列,并且有多个 ModelA 记录具有相同的 foo 值(假设 x)。但是,只有一个 ModelA 具有关联的 ModelB,其条值为 y。我认为 SQL 将是:

SELECT model_a.id FROM model_a LEFT JOIN model_b ON model_a.id = model_b.model_a_id WHERE model_a.foo = "x" AND model_b.bar = "y"

我如何使用 ActiveRecord 编写它?

最佳答案

您必须非常保护代码库的这个特定片段!

ModelA.joins(
'left join model_bs on model_as.id = model_bs.model_a_id'
).where(
model_a: { foo: 'x' },
model_b: { bar: 'y' }
).select(
'model_as.id'
)

因为你想要一个不能用简单的 join(:model_b) 实现的左连接是冗长的原因left join model_bs on model_as.id = model_bs.model_a_id . where 方法参数是基于散列的,以向您展示如何使用它们的示例。决赛select方法调用是选择所需的model_as.id ,假设您的表名是 model_asmodel_bs .

希望这对您有所帮助。

关于sql - ActiveRecord:查找与某个值有关联的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24052029/

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