/** * Returns [['entityClass' => $entityClass, 'idAlias' => $entityIdAlias], ...] for all configured tags columns. * * @param DatagridConfiguration $config * * @return array */ protected function getTagColumnDefinitions(DatagridConfiguration $config) { $aliases = $config->offsetGetByPath(self::GRID_COLUMN_ALIAS_PATH); $tagColumns = []; if (null === $aliases) { return $tagColumns; } $joinIdentifierHelper = $this->getJoinIdentifierHelper(); foreach ($aliases as $key => $alias) { $field = $joinIdentifierHelper->getFieldName($key); if ($field === TagVirtualFieldProvider::TAG_FIELD) { // get entity class from relations aliases if tag_field configured for relations $entityClassName = $joinIdentifierHelper->getEntityClassName($key) ?: parent::getEntityClassName($config); $tagColumns[] = ['idAlias' => $alias, 'entityClass' => $entityClassName]; } } return $tagColumns; }