Example #1
0
 /**
  * @param IEntity
  * @param array id => id
  * @param array id => id {@see ManyToMany::$injectedValue}
  * @return array id => id
  */
 public function load(IEntity $parent, $injectedValue)
 {
     $mapped = $this->meta->getWhereIsMapped();
     if ($mapped === RelationshipMetaDataToMany::MAPPED_THERE or $mapped === RelationshipMetaDataToMany::MAPPED_BOTH) {
         $childRepo = $parent->getModel()->{$this->meta->getChildRepository()};
         $childParam = $this->meta->getChildParam();
         $pid = $parent->id;
         $value = array();
         if ($mapped === RelationshipMetaDataToMany::MAPPED_BOTH) {
             $value = $injectedValue;
         }
         foreach ($childRepo->mapper->findAll() as $child) {
             $childInjectedValue = $child->{$childParam}->getInjectedValue();
             if ($childInjectedValue and isset($childInjectedValue[$pid])) {
                 $value[$child->id] = $child->id;
             }
         }
         return $value;
     } else {
         return $injectedValue;
     }
 }