diff --git a/application/Espo/Core/SelectManager.php b/application/Espo/Core/SelectManager.php index c3191df50a..0e92616444 100644 --- a/application/Espo/Core/SelectManager.php +++ b/application/Espo/Core/SelectManager.php @@ -45,8 +45,11 @@ class SelectManager { if (!empty($params['sortBy'])) { $result['orderBy'] = $params['sortBy']; - if ($this->metadata->get("entityDefs.{$this->entityName}.fields." . $result['orderBy'] . ".type") == 'link') { + $type = $this->metadata->get("entityDefs.{$this->entityName}.fields." . $result['orderBy'] . ".type"); + if ($type == 'link') { $result['orderBy'] .= 'Name'; + } else if ($type == 'linkParent') { + $result['orderBy'] .= 'Type'; } } if (isset($params['asc'])) { diff --git a/application/Espo/Services/Record.php b/application/Espo/Services/Record.php index c7e633092c..361d92787f 100644 --- a/application/Espo/Services/Record.php +++ b/application/Espo/Services/Record.php @@ -70,9 +70,9 @@ class Record extends \Espo\Core\Services\Base return $entity; } - protected function loadLinkMultipleFields($entity) + protected function loadLinkMultipleFields(Entity $entity) { - $fieldDefs = $this->getMetadata()->get('entityDefs.' . $this->entityName . '.fields', array()); + $fieldDefs = $this->getMetadata()->get('entityDefs.' . $entity->getEntityName() . '.fields', array()); foreach ($fieldDefs as $field => $defs) { if ($defs['type'] == 'linkMultiple') { $entity->loadLinkMultipleField($field); @@ -80,9 +80,9 @@ class Record extends \Espo\Core\Services\Base } } - protected function loadParentNameFields($entity) + protected function loadParentNameFields(Entity $entity) { - $fieldDefs = $this->getMetadata()->get('entityDefs.' . $this->entityName . '.fields', array()); + $fieldDefs = $this->getMetadata()->get('entityDefs.' . $entity->getEntityName() . '.fields', array()); foreach ($fieldDefs as $field => $defs) { if ($defs['type'] == 'linkParent') { $id = $entity->get($field . 'Id'); @@ -159,6 +159,10 @@ class Record extends \Espo\Core\Services\Base { $selectParams = $this->getSelectManager($this->entityName)->getSelectParams($params, true); $collection = $this->getRepository()->find($selectParams); + + foreach ($collection as $entity) { + $this->loadParentNameFields($entity); + } return array( 'total' => $this->getRepository()->count($selectParams), @@ -181,6 +185,10 @@ class Record extends \Espo\Core\Services\Base $selectParams = $this->getSelectManager($foreignEntityName)->getSelectParams($params, true); $collection = $this->getRepository()->findRelated($entity, $link, $selectParams); + foreach ($collection as $entity) { + $this->loadParentNameFields($entity); + } + // TODO // $repository->via($entity, $link)->find($selectParams);