/** * Add sorting to entity identifiers. * * @param array $entityIDs * @param string $fieldName Additional field name for sorting * @param string $order Sorting order(ASC|DESC) * @return array Collection of entity identifiers ordered by additional field value */ protected function applySorting(array $entityIDs, $fieldName, $order = 'ASC') { if (array_key_exists($fieldName, static::$virtualFieldNames)) { // Get additional field metadata $fieldID = static::$virtualFieldNames[$fieldName]; $valueColumn = static::$virtualFieldValueColumns[$fieldID]; return $this->query->entity(CMS::MATERIAL_FIELD_RELATION_ENTITY)->where(Field::F_PRIMARY, $fieldID)->where(Material::F_PRIMARY, $entityIDs)->orderBy($valueColumn, $order)->fields(Material::F_PRIMARY); } else { // Nothing is changed return parent::applySorting($entityIDs, $fieldName, $order); } }
/** * Add sorting to entity identifiers. * * @param array $entityIDs * @param string $fieldName Additional field name for sorting * @param string $order Sorting order(ASC|DESC) * @return array Collection of entity identifiers ordered by additional field value */ protected function applySorting(array $entityIDs, $fieldName, $order = 'ASC') { // Get additional field metadata $fieldID =& static::$fieldNames[$fieldName]; $valueColumn =& static::$fieldValueColumns[$fieldID]; // If this is additional field if (null !== $fieldID && null !== $valueColumn) { return $this->query->entity(CMS::MATERIAL_FIELD_RELATION_ENTITY)->where(Field::F_PRIMARY, $fieldID)->where(Material::F_PRIMARY, $entityIDs)->orderBy($valueColumn, $order)->fields(Material::F_PRIMARY); } else { // Nothing is changed return parent::applySorting($entityIDs, $fieldName, $order); } }