コード例 #1
0
ファイル: Morm.php プロジェクト: anicet/morm
 /**
  * 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");
     }
 }