vendor/pimcore/pimcore/models/DataObject/Listing/Dao.php line 65

Open in your IDE?
  1. <?php
  2. /**
  3.  * Pimcore
  4.  *
  5.  * This source file is available under two different licenses:
  6.  * - GNU General Public License version 3 (GPLv3)
  7.  * - Pimcore Commercial License (PCL)
  8.  * Full copyright and license information is available in
  9.  * LICENSE.md which is distributed with this source code.
  10.  *
  11.  *  @copyright  Copyright (c) Pimcore GmbH (http://www.pimcore.org)
  12.  *  @license    http://www.pimcore.org/license     GPLv3 and PCL
  13.  */
  14. namespace Pimcore\Model\DataObject\Listing;
  15. use Doctrine\DBAL\Query\QueryBuilder as DoctrineQueryBuilder;
  16. use Pimcore\Model;
  17. use Pimcore\Model\DataObject;
  18. use Pimcore\Model\Listing\Dao\QueryBuilderHelperTrait;
  19. /**
  20.  * @internal
  21.  *
  22.  * @property \Pimcore\Model\DataObject\Listing $model
  23.  */
  24. class Dao extends Model\Listing\Dao\AbstractDao
  25. {
  26.     use QueryBuilderHelperTrait;
  27.     /**
  28.      * @return string
  29.      */
  30.     public function getTableName()
  31.     {
  32.         return 'objects';
  33.     }
  34.     /**
  35.      * @param string|string[]|null $columns
  36.      *
  37.      * @return DoctrineQueryBuilder
  38.      *
  39.      * @throws \Exception
  40.      */
  41.     public function getQueryBuilder(...$columns): DoctrineQueryBuilder
  42.     {
  43.         $queryBuilder $this->db->createQueryBuilder();
  44.         $queryBuilder->select(...$columns)->from($this->getTableName());
  45.         // apply joins
  46.         $this->applyJoins($queryBuilder);
  47.         $this->applyListingParametersToQueryBuilder($queryBuilder);
  48.         return $queryBuilder;
  49.     }
  50.     /**
  51.      * Loads a list of objects for the specicifies parameters, returns an array of DataObject\AbstractObject elements
  52.      *
  53.      * @return array
  54.      */
  55.     public function load()
  56.     {
  57.         // load id's
  58.         $list $this->loadIdList();
  59.         $objects = [];
  60.         foreach ($list as $o_id) {
  61.             if ($object DataObject::getById($o_id)) {
  62.                 $objects[] = $object;
  63.             }
  64.         }
  65.         $this->model->setObjects($objects);
  66.         return $objects;
  67.     }
  68.     /**
  69.      * @return int
  70.      */
  71.     public function getTotalCount()
  72.     {
  73.         $queryBuilder $this->getQueryBuilder();
  74.         $this->prepareQueryBuilderForTotalCount($queryBuilder$this->getTableName() . '.o_id');
  75.         $totalCount $this->db->fetchOne((string) $queryBuilder$this->model->getConditionVariables(), $this->model->getConditionVariableTypes());
  76.         return (int) $totalCount;
  77.     }
  78.     /**
  79.      * @return int
  80.      */
  81.     public function getCount()
  82.     {
  83.         if ($this->model->isLoaded()) {
  84.             return count($this->model->getObjects());
  85.         } else {
  86.             $idList $this->loadIdList();
  87.             return count($idList);
  88.         }
  89.     }
  90.     /**
  91.      * Loads a list of document ids for the specicifies parameters, returns an array of ids
  92.      *
  93.      * @return int[]
  94.      */
  95.     public function loadIdList()
  96.     {
  97.         $queryBuilder $this->getQueryBuilder([sprintf('%s as o_id'$this->getTableName() . '.o_id'), sprintf('%s as o_type'$this->getTableName() . '.o_type')]);
  98.         $objectIds $this->db->fetchFirstColumn((string) $queryBuilder$this->model->getConditionVariables(), $this->model->getConditionVariableTypes());
  99.         return array_map('intval'$objectIds);
  100.     }
  101.     /**
  102.      * @param DoctrineQueryBuilder $queryBuilder
  103.      *
  104.      * @return $this
  105.      */
  106.     protected function applyJoins(DoctrineQueryBuilder $queryBuilder)
  107.     {
  108.         return $this;
  109.     }
  110. }