/** * Adds entity virtual fields to $result * * @param array $result * @param string $className * @param bool $withEntityDetails * @param bool $applyExclusions * @param bool $translate */ protected function addVirtualRelations(array &$result, $className, $withEntityDetails, $applyExclusions, $translate) { if (!$this->virtualRelationProvider) { return; } $metadata = $this->getMetadataFor($className); $virtualRelations = $this->virtualRelationProvider->getVirtualRelations($className); foreach ($virtualRelations as $associationName => $virtualRelation) { if ($applyExclusions && $this->exclusionProvider->isIgnoredField($metadata, $associationName)) { continue; } $fieldType = $virtualRelation['relation_type']; $targetClassName = $this->entityClassResolver->getEntityClass($virtualRelation['related_entity_name']); $label = !empty($virtualRelation['label']) ? $virtualRelation['label'] : $this->getFieldLabel($metadata, $associationName); $this->addRelation($result, $associationName, $fieldType, $label, $this->getRelationType($fieldType), $targetClassName, $withEntityDetails, $translate); } }
protected function loadVirtualFields() { $entities = $this->cache->getEntities(); foreach ($entities as $className => $entityData) { $virtualFields = $this->virtualFieldProvider->getVirtualFields($className); if (!empty($virtualFields)) { foreach ($virtualFields as $fieldName) { if (null === $this->cache->getConfigurable($className, $fieldName)) { $this->cache->saveConfigurable(false, $className, $fieldName); } } } $virtualRelations = $this->virtualRelationProvider->getVirtualRelations($className); if (!empty($virtualRelations)) { foreach ($virtualRelations as $fieldName => $config) { if (null === $this->cache->getConfigurable($className, $fieldName)) { $this->cache->saveConfigurable(false, $className, $fieldName); } } } } }