Jump to content

AtkOneToManyRelation: Difference between revisions

From NusaATK
Guri (talk | contribs)
m Add reference to customising Add link
No edit summary
 
Line 29: Line 29:


It is possible to customise the text for the Add link, see [[Renaming_'add'_and_'select'_links_in_relations]].
It is possible to customise the text for the Add link, see [[Renaming_'add'_and_'select'_links_in_relations]].
=== Example atkMetaNode ===
A department has many employees
  public static function meta(atkMetaPolicy $policy) {
      $policy->hasMany('employee');
  }


[[Category:Relations]]
[[Category:Relations]]

Latest revision as of 09:33, 4 October 2010

atkOneToManyRelation screenshot

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).


It is possible to use setDestinationFilter() on this relation. This can be helpful in creating table links that depend on another field.

Example

 $rel = &new atkOneToManyRelation("notes","node.notes","note_related_id", AF_HIDE_LIST);
 $rel->setDestinationFilter("type='employees'");
 $this->add($rel);

This should also auto populate the filter when adding sub nodes.

note that setDestinationFilter("type='employees'"); works but setDestinationFilter("type = 'employees'"); does not appear to work as it will add the single quotes into the field which wont be seen since they aren't in the filter.


It is possible to customise the text for the Add link, see Renaming_'add'_and_'select'_links_in_relations.

Example atkMetaNode

A department has many employees

 public static function meta(atkMetaPolicy $policy) {
     $policy->hasMany('employee');
 }