Exemple #1
0
 /**
  * @param SFM_RelationSide $side
  * @param SFM_Entity $entity
  * @throws SFM_Exception
  * @return null|SFM_Entity|SFM_List
  */
 public function loadByEntity(SFM_RelationSide $side, SFM_Entity $entity)
 {
     $inverseSide = $this->getInverseSide($side);
     $mapper = $this->engine->mapper($inverseSide->member);
     $simpleValue = $entity->getSimple($side->simple);
     if ($side->isOwner) {
         if ($inverseSide->isMany) {
             //Many to Many case
             throw new SFM_Exception('Not implemented yet');
         } else {
             //Many to One
             $complexValue = $mapper->getEntityById($simpleValue);
         }
     } else {
         if ($inverseSide->isMany) {
             $complexValue = $mapper->getListByParams(array($inverseSide->simple => $simpleValue), array());
         } else {
             //One to One
             $complexValue = $mapper->getEntityByUniqueKeyByRelationOnly($inverseSide->simple, $simpleValue);
         }
     }
     $entity->setComplexByRelationOnly($side->complex, $complexValue);
     if (!$side->isOwner) {
         if ($complexValue instanceof SFM_Entity) {
             $complexValue->setComplexByRelationOnly($inverseSide->complex, $entity);
         } elseif ($complexValue instanceof SFM_List) {
             /**@var SFM_Entity $complexEntity */
             foreach ($complexValue as $complexEntity) {
                 $complexEntity->setComplexByRelationOnly($inverseSide->complex, $entity);
             }
         }
     }
     return $complexValue;
 }
Exemple #2
0
 protected function parseSimple($arrData, $member, $memberReference, $isOwner)
 {
     if (count($arrData) > 2) {
         $simple = $arrData[2];
     } else {
         if ($isOwner) {
             $simple = $this->naming->member2fk($memberReference);
         } else {
             //TODO CRAP CRAP CRAP
             $arrMeta = $this->engine->meta($member);
             $simple = $arrMeta['primary_key'];
         }
     }
     return $simple;
 }
Exemple #3
0
 /**
  * @param $member
  * @return SFM_DAO
  */
 public function getDAO($member)
 {
     return $this->engine->getDao($member);
 }