/** * @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; } }