Exemple #1
0
 /**
  * @see \Oro\Bundle\EntityBundle\Provider\EntityFieldProvider::getRelations
  *
  * @param string $entityName
  * @param bool $withEntityDetails
  * @param bool $applyExclusions
  * @param bool $translate
  * @return array
  */
 public function getRelations($entityName, $withEntityDetails = false, $applyExclusions = true, $translate = true)
 {
     $args = func_get_args();
     $cacheKey = implode(':', $args);
     if (!array_key_exists($cacheKey, $this->relationsCache)) {
         $this->relationsCache[$cacheKey] = $this->fieldProvider->getRelations($entityName, $withEntityDetails, $applyExclusions, $translate);
     }
     return $this->relationsCache[$cacheKey];
 }
 /**
  * Finds detached properties in entity and reloads them from UnitOfWork
  *
  * @param object $entity doctrine entity
  * @param int $level maximum nesting level
  */
 public function fixEntityAssociationFields($entity, $level = 0)
 {
     if ($level < 0) {
         return;
     }
     // we should use entityFieldProvider to get relations data to avoid deleted relations in result list
     $relations = $this->entityFieldProvider->getRelations(ClassUtils::getClass($entity));
     if (!$relations) {
         return;
     }
     $propertyAccessor = PropertyAccess::createPropertyAccessor();
     foreach ($relations as $associationMapping) {
         $fieldName = $associationMapping['name'];
         $value = $propertyAccessor->getValue($entity, $fieldName);
         if ($value && is_object($value)) {
             if ($value instanceof Collection) {
                 $this->fixCollectionField($value, $level);
             } else {
                 $this->fixEntityField($entity, $fieldName, $value, $level);
             }
         }
     }
 }
 /**
  * @param array $expected
  *
  * @dataProvider relationsExpectedDataProvider
  */
 public function testGetRelations(array $expected)
 {
     $this->prepareWithRelations();
     $result = $this->provider->getRelations('Acme:Test', true);
     $this->assertEquals($expected, $result);
 }