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
(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
Clears all associated records from the parent record and the database
return : [] of T
Example
(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
Create a new record and associate it with the parent record
param : attributes (Hash(Symbol, String | Int64))
return : Array(Target)
raise : Cql::Error
Example
(record : Target)
Delete the associated record from the parent record if it exists
param : record (Target)
return : Bool
Example
(id : Pk)
Delete the associated record from the parent record if it exists
param : id (Pk)
return : Bool
Example
(ids : Array(Int64))
Associates the parent record with the records that match the primary keys provided
param : ids (Array(Pk))
return : Array(Target)
Example