ATK Relations: Difference between revisions
No edit summary |
|||
| Line 32: | Line 32: | ||
* $refKey For regular oneToMany relationships, $refKey is name of the referential key in the destination node. In the case of multi-foreign key relationships, $refKey can be an array of fields. | * $refKey For regular oneToMany relationships, $refKey is name of the referential key in the destination node. In the case of multi-foreign key relationships, $refKey can be an array of fields. | ||
'''Example''' | |||
Suppose a department (node A) has many employees (node B). To edit the list of employees in a department, this relationship can be built with an atkOneToManyRelation. Each employee gets a department_id (a_id). | Suppose a department (node A) has many employees (node B). To edit the list of employees in a department, this relationship can be built with an atkOneToManyRelation. Each employee gets a department_id (a_id). | ||
| Line 42: | Line 43: | ||
* $destination The node we have a relationship with. | * $destination The node we have a relationship with. | ||
'''Example''' | |||
Projects all have one coordinator (node B), but one coordinator can have multiple projects (node A). So in the project class, there's a atkManyToOneRelation to a coordinator. | |||
[[image:atkManyToOne.jpg|center]] | [[image:atkManyToOne.jpg|center]] | ||
Revision as of 12:49, 14 July 2006
A relation defines a relation between two tables. One or more records in the first table belong to one or more records in the second table. A one to many relation would be '1 library has N books'.
atkOneToOneRelation
An atkOneToOneRelation defines a relation between two tables where there is one record in the first table that belongs to one record in the second table.
The atkOneToOneRelation supports two configurations: master mode and slave mode. The mode to use is detected automatically based on the value of the $refKey parameter.
function atkOneToOneRelation($name, $destination, $refKey="", $flags=0)
- $name: The unique name of the attribute.
- $destination: the destination node (in module.nodename notation)
- $refKey: foreign-key field (master mode) or empty (slave mode)
Master mode example
The node in which the relation is implemented, is considered the master (code is in node A). And the referential key pointing to the master record (a_id) is in the destination node (node B).

Referential key a_id is in the other node, so this is the master-configuration.
Slave mode example
The node in which the relation is implemented (code is in node B), is considered the child. And the referential key pointing to the master record (a_id) is in the current node (node B).

Referential key a_id is in the same node, so this is the slave-configuration.
atkOneToManyRelation
function atkOneToManyRelation($name, $destination, $refKey="", $flags=0)
- $name The unique name of this relation within a node - In contrast with moth other attributes, the name does not correspond to a database field. This is because in one2many relations, the databasefield that stores the link, is in the destination node (B) and not in the owner node (A)
- $destination The node to which the relationship is made
- $refKey For regular oneToMany relationships, $refKey is name of the referential key in the destination node. In the case of multi-foreign key relationships, $refKey can be an array of fields.
Example Suppose a department (node A) has many employees (node B). To edit the list of employees in a department, this relationship can be built with an atkOneToManyRelation. Each employee gets a department_id (a_id).

atkManyToOneRelation
function atkManyToOneRelation($name, $destination, $flags=0)
- $name The name of the attribute.
- $destination The node we have a relationship with.
Example Projects all have one coordinator (node B), but one coordinator can have multiple projects (node A). So in the project class, there's a atkManyToOneRelation to a coordinator.
