setObjectRelation() public method

public setObjectRelation ( string $objectRelation )
$objectRelation string
Example #1
0
 /**
  * @param \Jarves\Configuration\Object $objectDefinition
  * @param Configs $configs
  * @return bool
  */
 protected function defineCrossObject(Object $objectDefinition, Configs $configs)
 {
     $changed = false;
     $bundle = $objectDefinition->getBundle();
     $foreignObjectDefinition = $configs->getObject($this->getFieldDefinition()->getObject());
     $possibleObjectName = ucfirst($objectDefinition->getId()) . ucfirst($foreignObjectDefinition->getId());
     $possibleObjectKey = $bundle->getName() . '/' . $possibleObjectName;
     if (!($crossObjectKey = $this->getFieldDefinition()->getObjectRelationCrossObjectKey())) {
         $crossObjectKey = $possibleObjectKey;
     }
     $crossObject = $configs->getObject($crossObjectKey);
     if (!$crossObject) {
         if (!($crossObject = $configs->getObject($possibleObjectKey))) {
             $crossObject = new Object(null, $objectDefinition->getJarves());
             $crossObject->setId($possibleObjectName);
             $crossObject->setSearchable(false);
             $crossObject->setAutoCrud(false);
             $crossObject->setExcludeFromREST(true);
             $crossObject->setTable($objectDefinition->getTable() . '_' . Tools::camelcase2Underscore($foreignObjectDefinition->getId()));
             $changed = true;
         }
     }
     if (!$crossObject->isCrossRef()) {
         $crossObject->setCrossRef(true);
         $changed = true;
     }
     $leftFieldName = $this->getFieldDefinition()->getObjectRefRelationName() ?: $objectDefinition->getId();
     if (!$crossObject->getField($leftFieldName)) {
         $leftObjectField = new Field(null, $objectDefinition->getJarves());
         $leftObjectField->setId($leftFieldName);
         $leftObjectField->setType('object');
         $leftObjectField->setObject($objectDefinition->getKey());
         $leftObjectField->setObjectRelation(AbstractStorage::ONE_TO_ONE);
         $leftObjectField->setPrimaryKey(true);
         $crossObject->addField($leftObjectField);
         $changed = true;
     }
     if (!$crossObject->getField($this->getFieldDefinition()->getId())) {
         $rightObjectField = new Field(null, $objectDefinition->getJarves());
         $rightObjectField->setId($this->getFieldDefinition()->getId());
         $rightObjectField->setType('object');
         $rightObjectField->setObject($foreignObjectDefinition->getKey());
         $rightObjectField->setObjectRelation(AbstractStorage::ONE_TO_ONE);
         $rightObjectField->setPrimaryKey(true);
         $crossObject->addField($rightObjectField);
         $changed = true;
     }
     if (!$crossObject->getBundle()) {
         //we created a new object
         $bundle->addObject($crossObject);
     }
     return $changed;
 }