module Joinable

Overview

Handles all types of JOIN clauses.

Defined in:

query/joinable.cr

Instance Method Summary

Instance Method Detail

def inner(table_or_alias : Symbol | Hash(Symbol, Symbol), on : Hash(CQL::BaseColumn, CQL::BaseColumn | DB::Any)) #

Adds an INNER JOIN with an explicit ON condition (Hash).

Example Adding an INNER JOIN with an explicit ON condition

query.inner(users, on: {users.id: posts.user_id})

[View source]
def inner(table_or_alias : Symbol | Hash(Symbol, Symbol), &) #

Adds an INNER JOIN with an explicit ON condition (Block).

Example Adding an INNER JOIN with an explicit ON condition using a block

query.inner(users) do |builder|
  builder.on(users.id == posts.user_id)
end

[View source]
def joins(*tables_to_join : Symbol) #

Adds inferred INNER JOINs using splat arguments for table names.

Example Adding inferred INNER JOINs using splat arguments for table names

query.joins(:users, :posts)

[View source]
def joins(**tables_to_join) #

Adds inferred INNER JOINs using keyword arguments for aliases.

Example Adding inferred INNER JOINs using keyword arguments for aliases

query.joins(users: :posts)

[View source]
def left(table_or_alias : Symbol | Hash(Symbol, Symbol), on : Hash(CQL::BaseColumn, CQL::BaseColumn | DB::Any)) #

Adds a LEFT JOIN with an explicit ON condition (Hash).

Example Adding a LEFT JOIN with an explicit ON condition

query.left(users, on: {users.id: posts.user_id})

[View source]
def left(table_or_alias : Symbol | Hash(Symbol, Symbol), &) #

Adds a LEFT JOIN with an explicit ON condition (Block).

Example Adding a LEFT JOIN with an explicit ON condition using a block

query.left(users) do |builder|
  builder.on(users.id == posts.user_id)
end

[View source]
def left_joins(*tables_to_join : Symbol) #

Adds inferred LEFT JOINs using splat arguments for table names.

Example Adding inferred LEFT JOINs using splat arguments for table names

query.joins(:users, :posts)

[View source]
def left_joins(**tables_to_join) #

Adds inferred LEFT JOINs using keyword arguments for aliases.

Example Adding inferred LEFT JOINs using keyword arguments for aliases

query.joins(users: :posts)

[View source]
def right(table_or_alias : Symbol | Hash(Symbol, Symbol), on : Hash(CQL::BaseColumn, CQL::BaseColumn | DB::Any)) #

Adds a RIGHT JOIN with an explicit ON condition (Hash).

Example Adding a RIGHT JOIN with an explicit ON condition

query.right(users, on: {users.id: posts.user_id})

[View source]
def right(table_or_alias : Symbol | Hash(Symbol, Symbol), &) #

Adds a RIGHT JOIN with an explicit ON condition (Block).

Example Adding a RIGHT JOIN with an explicit ON condition using a block

query.right(users) do |builder|
  builder.on(users.id == posts.user_id)
end

[View source]
def right_joins(*tables_to_join : Symbol) #

Adds inferred RIGHT JOINs using splat arguments for table names.

Example Adding inferred RIGHT JOINs using splat arguments for table names

query.joins(:users, :posts)

[View source]
def right_joins(**tables_to_join) #

Adds inferred RIGHT JOINs using keyword arguments for aliases.

Example Adding inferred RIGHT JOINs using keyword arguments for aliases

query.joins(users: :posts)

[View source]