/** * loadForeignObjectFromMormons * * same as loadForeignObject but from an associated mormon so that the * objects keep a reference between themselves * * @throws exception if the given alias_or_table is not declared in the * has_many hash * @param string $alias_or_table * @param array $to_load * @return void */ public function loadForeignObjectFromMormons($alias_or_table, $to_load = null) { if ($this->isForeignMormons($alias_or_table)) { $table = $this->getForeignMormonsTable($alias_or_table); if (is_null($to_load)) { $mormons = new Mormons($table); //TODO manage multiple primary keys $mormons->add_conditions(array($this->getForeignMormonsKey($alias_or_table) => $this->{$this->_pkey})); if (isset($this->_has_many[$alias_or_table]['condition'])) { $mormons->add_conditions($this->_has_many[$alias_or_table]['condition']); } if (isset($this->_has_many[$alias_or_table]['order'])) { foreach ($this->_has_many[$alias_or_table]['order'] as $field => $direction) { $mormons->set_order($field); $mormons->set_order_dir($direction); } } $mormons->associateForeignObject($this->_pkey, $this); $this->_foreign_mormons[$alias_or_table] = $mormons; } else { if (!isset($this->_foreign_mormons[$alias_or_table])) { $this->loadForeignObjectFromMormons($alias_or_table); } $this->_foreign_mormons[$alias_or_table]->addMormFromArray($table, $to_load, $this); } } else { throw new Exception(get_class($this) . " does not have many " . $alias_or_table . "s"); } }