class CQL::Relations::ManyCollection(Target, Through, Pk)
CQL::Relations::Collection
< Reference
< Object
A collection of records for a many to many relationship This class is used to manage the relationship between two tables through a join table (through)
A many-to-many association occurs when multiple records of one model can be associated with multiple records of another model, and vice versa. Typically, it requires a join table (or a junction table) to store the relationships between the records of the two models.
Here’s how a many-to-many association is commonly implemented in CQL using Crystal.
Example
Constructors
def new(key : Symbol, id : Pk, target_key : Symbol, cascade : Bool = false, query : CQL::Query = (CQL::Query.new(Target.schema)).from(Target.table))
(key : Symbol, id : Pk, target_key : Symbol, cascade : Bool = false, query : CQL::Query = (CQL::Query.new(Target.schema)).from(Target.table))
Initialize the many-to-many association collection class
param : key (Symbol) - The key for the parent record
param : id (Pk) - The id value for the parent record
param : target_key (Symbol) - The key for the associated record
param : cascade (Bool) - Delete associated records
param : query (CQL::Query) - Query object
return : ManyCollection
Example
Instance Methods
def clear
Clears all associated records from the parent record and the database
return : [] of T
Example
def create(record : Target)
(record : Target)
Create a new record and associate it with the parent record
param : attributes (Hash(Symbol, String | Int64))
return : Array(Target)
raise : CQL::Error
Example
def create
Create a new record and associate it with the parent record
param : attributes (Hash(Symbol, String | Int64))
return : Array(Target)
raise : CQL::Error
Example
def delete(record : Target)
(record : Target)
Delete the associated record from the parent record if it exists
param : record (Target)
return : Bool
Example
def delete(id : Pk)
(id : Pk)
Delete the associated record from the parent record if it exists
param : id (Pk)
return : Bool
Example
def ids=(ids : Array(Int64))
(ids : Array(Int64))
Associates the parent record with the records that match the primary keys provided
param : ids (Array(Pk))
return : Array(Target)
Example
Last updated