簡體   English   中英

在軌道上使用 ruby 左外連接 (>=6) ORM?

[英]Left outer join using ruby on rails (>=6) ORM?

有沒有辦法使用導軌 ActiveRecord 簡單地進行左外連接?

在這里看到有一些使用原始 SQL 的方法,但我想使用“導軌方式”(假設導軌方式)

即檢索由栗色區域表示的記錄的查詢:

在此處輸入圖像描述

為什么不使用原始 SQL (像這里) - 這是一個公平的問題。 我的應用程序沒有原始 sql,只有customer.purchases形式的語法,所以我想保持整個應用程序的代碼一致性。

Rails >= 5 似乎內置了此功能。

是一個簡單的例子:

User.left_outer_joins(:posts)
=> SELECT "users".* FROM "users" LEFT OUTER JOIN "posts" ON "posts"."user_id" = "users"."id"

是另一個例子:

Author.left_joins :posts, :comments

# Produces:
Author Load (0.1ms)  SELECT "authors".* FROM "authors" LEFT OUTER JOIN "posts" ON "posts"."author_id" = "authors"."id" LEFT OUTER JOIN "comments" ON "comments"."author_id" = "authors"."id"

這個來自 RailsGuides 的例子也很容易知道(盡管它包含一些原始 SQL):

Customer.left_outer_joins(:reviews).distinct.select('customers.*, COUNT(reviews.*) AS reviews_count').group('customers.id')

#Produces:
SELECT DISTINCT customers.*, COUNT(reviews.*) AS reviews_count FROM customers
LEFT OUTER JOIN reviews ON reviews.customer_id = customers.id GROUP BY customers.id

暫無
暫無

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

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