b374k
m1n1 1.01
Apache/2.4.41 (Ubuntu)
Linux vmi616275.contaboserver.net 5.4.0-84-generic #94-Ubuntu SMP Thu Aug 26 20:27:37 UTC 2021 x86_64
uid=33(www-data) gid=33(www-data) groups=33(www-data)
server ip : 62.171.164.128 | your ip : 127.0.0.1
safemode OFF
 >  / home / a / home / dev2.destoffenstraat.com / vendor / magento / framework / DB /
Filename/home/a/home/dev2.destoffenstraat.com/vendor/magento/framework/DB/Query.php
Size6.31 kb
Permissionrw-r--r--
Ownerroot : root
Create time21-Aug-2025 12:26
Last modified07-Jan-2021 21:08
Last accessed22-Aug-2025 21:41
Actionsedit | rename | delete | download (gzip)
Viewtext | code | image
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Framework\DB;

use Psr\Log\LoggerInterface as Logger;

/**
* Class Query
*/
class Query implements QueryInterface
{
/**
* Select object
*
* @var \Magento\Framework\DB\Select
*/
protected $select;

/**
* @var \Magento\Framework\Api\CriteriaInterface
*/
protected $criteria;

/**
* Resource instance
*
* @var \Magento\Framework\Model\ResourceModel\Db\AbstractDb
*/
protected $resource;

/**
* Database's statement for fetch item one by one
*
* @var \Zend_Db_Statement_Pdo
*/
protected $fetchStmt = null;

/**
* @var Logger
*/
protected $logger;

/**
* @var \Magento\Framework\Data\Collection\Db\FetchStrategyInterface
*/
private $fetchStrategy;

/**
* @var array
*/
protected $bindParams = [];

/**
* @var int
*/
protected $totalRecords;

/**
* @var mixed
*/
protected $data;

/**
* Query Select Parts to be skipped when prepare query for count
*
* @var array
*/
protected $countSqlSkipParts = [
\Magento\Framework\DB\Select::ORDER => true,
\Magento\Framework\DB\Select::LIMIT_COUNT => true,
\Magento\Framework\DB\Select::LIMIT_OFFSET => true,
\Magento\Framework\DB\Select::COLUMNS => true,
];

/**
* @param \Magento\Framework\DB\Select $select
* @param \Magento\Framework\Api\CriteriaInterface $criteria
* @param \Magento\Framework\Model\ResourceModel\Db\AbstractDb $resource
* @param \Magento\Framework\Data\Collection\Db\FetchStrategyInterface $fetchStrategy
*/
public function __construct(
\Magento\Framework\DB\Select $select,
\Magento\Framework\Api\CriteriaInterface $criteria,
\Magento\Framework\Model\ResourceModel\Db\AbstractDb $resource,
\Magento\Framework\Data\Collection\Db\FetchStrategyInterface $fetchStrategy
) {
$this->select = $select;
$this->criteria = $criteria;
$this->resource = $resource;
$this->fetchStrategy = $fetchStrategy;
}

/**
* Retrieve source Criteria object
*
* @return \Magento\Framework\Api\CriteriaInterface
*/
public function getCriteria()
{
return $this->criteria;
}

/**
* Retrieve all ids for query
*
* @return array
*/
public function getAllIds()
{
$idsSelect = clone $this->getSelect();
$idsSelect->reset(\Magento\Framework\DB\Select::ORDER);
$idsSelect->reset(\Magento\Framework\DB\Select::LIMIT_COUNT);
$idsSelect->reset(\Magento\Framework\DB\Select::LIMIT_OFFSET);
$idsSelect->reset(\Magento\Framework\DB\Select::COLUMNS);
$idsSelect->columns($this->getResource()->getIdFieldName(), 'main_table');
return $this->getConnection()->fetchCol($idsSelect, $this->bindParams);
}

/**
* Add variable to bind list
*
* @param string $name
* @param mixed $value
* @return void
*/
public function addBindParam($name, $value)
{
$this->bindParams[$name] = $value;
}

/**
* Get collection size
*
* @return int
*/
public function getSize()
{
if ($this->totalRecords === null) {
$sql = $this->getSelectCountSql();
$this->totalRecords = $this->getConnection()->fetchOne($sql, $this->bindParams);
}
return (int)$this->totalRecords;
}

/**
* Get sql select string or object
*
* @param bool $stringMode
* @return string || Select
*/
public function getSelectSql($stringMode = false)
{
if ($stringMode) {
return $this->select->__toString();
}
return $this->select;
}

/**
* Reset Statement object
*
* @return void
*/
public function reset()
{
$this->fetchStmt = null;
$this->data = null;
}

/**
* Fetch all statement
*
* @return array
*/
public function fetchAll()
{
if ($this->data === null) {
$select = $this->getSelect();
$this->data = $this->fetchStrategy->fetchAll($select, $this->bindParams);
}
return $this->data;
}

/**
* Fetch statement
*
* @return mixed
*/
public function fetchItem()
{
if (null === $this->fetchStmt) {
$this->fetchStmt = $this->getConnection()->query($this->getSelect(), $this->bindParams);
}
$data = $this->fetchStmt->fetch();
if (!$data) {
$data = [];
}
return $data;
}

/**
* Get Identity Field Name
*
* @return string
*/
public function getIdFieldName()
{
return $this->getResource()->getIdFieldName();
}

/**
* Retrieve connection object
*
* @return \Magento\Framework\DB\Adapter\AdapterInterface
*/
public function getConnection()
{
return $this->getSelect()->getConnection();
}

/**
* Get resource instance
*
* @return \Magento\Framework\Model\ResourceModel\Db\AbstractDb
*/
public function getResource()
{
return $this->resource;
}

/**
* Add Select Part to skip from count query
*
* @param string $name
* @param bool $toSkip
* @return void
*/
public function addCountSqlSkipPart($name, $toSkip = true)
{
$this->countSqlSkipParts[$name] = $toSkip;
}

/**
* Get SQL for get record count
*
* @return Select
*/
protected function getSelectCountSql()
{
$countSelect = clone $this->getSelect();
foreach ($this->getCountSqlSkipParts() as $part => $toSkip) {
if ($toSkip) {
$countSelect->reset($part);
}
}
$countSelect->columns('COUNT(*)');

return $countSelect;
}

/**
* Returned count SQL skip parts
*
* @return array
*/
protected function getCountSqlSkipParts()
{
return $this->countSqlSkipParts;
}

/**
* Get \Magento\Framework\DB\Select object instance
*
* @return Select
*/
protected function getSelect()
{
return $this->select;
}
}