17回答

0收藏

ActiveRecord联接查询并在Rails中选择

技术问答 技术问答 878 人阅读 | 17 人回复 | 2022-03-03

在我的Rails
5 }/ P0 g  i, B2 R" u, e. u3 v, o- A4应用程序中的客户端(clients表)可以有多个项目(projects表)。我name每个表中都有一列。我试着写一个join,然后select使用项目作为基础表,将客户端用作查找表。client_id是foreign_key项目表:
( a+ x. r) P& |# v我写了我的查询,如下所示:& U& P" d2 j* s- \* l' i. S6 h
Project.joins(:client).select('projects.id,projects.name,clients.name')我得到以下回应:- X) D/ z* ?: f. z) p6 R
Project Load (0.6ms)  SELECT projects.id,projects.name,clients.name FROM "projects" INNER JOIN "clients" ON "clients"."id" = "projects"."client_id"=> #]>假如我试着这样给它起别名:
$ v# k( O0 G- MProject.joins(:client).select('projects.id,projects.name,clients.name as client_name')然后我得到以下反应:+ u! i+ w7 Z9 {
Project Load (0.8ms)  SELECT projects.id,projects.name,clients.name as client_name FROM "projects" INNER JOIN "clients" ON "clients"."id" = "projects"."client_id"=> #]>无论如何,ActiveRecord其中一个名字会被释放,正如你从上面的反应中看到的。我应该如何编写这个查询?  |2 K, k4 a6 H
                                                               
# M) ^( L  M2 h7 l- M    解决方案:                                                                " i3 \! D( l8 x9 Q+ o9 ]0 \
                                                                若其中列select不是select其模型的属性之一不会显示这些列。所有这些属性仍然包含在对象中AR::Relation,并且可以像任何其他公共实例属性一样访问。
  k2 c! T$ ^5 Z, \/ ^* }  M您可以通过以下方式进行验证first.client_name:
& y* d, W# G# p$ VProject.joins(:client)       .select('projects.id,projects.name,clients.name as client_name         .first.client_name
分享到:
回复

使用道具 举报

回答|共 17 个

异常接近

发表于 2022-3-3 23:29:52 | 显示全部楼层

边撸边过
回复

使用道具 举报

清果冰纷

发表于 2022-3-5 13:54:10 | 显示全部楼层

锄禾日当午,发帖真辛苦。谁知坛中餐,帖帖皆辛苦!
回复

使用道具 举报

紫櫻千廈

发表于 2022-3-6 15:05:05 | 显示全部楼层

高手云集 果断围观
回复

使用道具 举报

唯一恒久远

发表于 2022-3-7 09:28:56 | 显示全部楼层

无论是不是沙发都得回复下
回复

使用道具 举报

无影灯

发表于 2022-3-8 04:58:50 | 显示全部楼层

顶起出售广告位
回复

使用道具 举报

素问生活

发表于 2022-3-8 16:13:20 | 显示全部楼层

占坑编辑ing
回复

使用道具 举报

清肺化痰心情好

发表于 2022-3-8 23:33:07 | 显示全部楼层

为毛老子总也抢不到沙发?!!
回复

使用道具 举报

黄金之辉

发表于 2022-3-9 05:29:42 | 显示全部楼层

鄙视楼下的顶帖没我快,哈哈
回复

使用道具 举报

不帅你报警

发表于 2022-3-9 10:51:51 | 显示全部楼层

占位编辑
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

29055 积分
9659 主题
热门推荐