mirror of
https://github.com/bdnugget/magento2.git
synced 2026-11-07 17:27:36 +00:00
223 lines
5.9 KiB
PHP
223 lines
5.9 KiB
PHP
<?php
|
|
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
namespace Magento\Sales\Model\ResourceModel\Collection;
|
|
|
|
/**
|
|
* Flat sales abstract collection
|
|
*
|
|
* @api
|
|
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
|
|
* @since 100.0.2
|
|
*/
|
|
abstract class AbstractCollection extends \Magento\Framework\Model\ResourceModel\Db\VersionControl\Collection
|
|
{
|
|
/**
|
|
* @var \Magento\Framework\DB\Select
|
|
*/
|
|
protected $_countSelect;
|
|
|
|
/**
|
|
* @var \Magento\Framework\Api\SearchCriteriaInterface
|
|
*/
|
|
protected $searchCriteria;
|
|
|
|
/**
|
|
* Set select count sql
|
|
*
|
|
* @param \Magento\Framework\DB\Select $countSelect
|
|
* @return $this
|
|
*/
|
|
public function setSelectCountSql(\Magento\Framework\DB\Select $countSelect)
|
|
{
|
|
$this->_countSelect = $countSelect;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* get select count sql
|
|
*
|
|
* @return \Magento\Framework\DB\Select
|
|
*/
|
|
public function getSelectCountSql()
|
|
{
|
|
if (!$this->_countSelect instanceof \Magento\Framework\DB\Select) {
|
|
$this->setSelectCountSql(parent::getSelectCountSql());
|
|
}
|
|
return $this->_countSelect;
|
|
}
|
|
|
|
/**
|
|
* Check if $attribute is \Magento\Eav\Model\Entity\Attribute and convert to string field name
|
|
*
|
|
* @param string|\Magento\Eav\Model\Entity\Attribute $attribute
|
|
* @return string
|
|
* @throws \Magento\Framework\Exception\LocalizedException
|
|
*/
|
|
protected function _attributeToField($attribute)
|
|
{
|
|
$field = false;
|
|
if (is_string($attribute)) {
|
|
$field = $attribute;
|
|
} elseif ($attribute instanceof \Magento\Eav\Model\Entity\Attribute) {
|
|
$field = $attribute->getAttributeCode();
|
|
}
|
|
if (!$field) {
|
|
throw new \Magento\Framework\Exception\LocalizedException(__('We cannot determine the field name.'));
|
|
}
|
|
return $field;
|
|
}
|
|
|
|
/**
|
|
* Add attribute to select result set.
|
|
* Backward compatibility with EAV collection
|
|
*
|
|
* @param string $attribute
|
|
* @return $this
|
|
*/
|
|
public function addAttributeToSelect($attribute)
|
|
{
|
|
$this->addFieldToSelect($this->_attributeToField($attribute));
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Specify collection select filter by attribute value
|
|
* Backward compatibility with EAV collection
|
|
*
|
|
* @param string|\Magento\Eav\Model\Entity\Attribute $attribute
|
|
* @param array|int|string|null $condition
|
|
* @return $this
|
|
*/
|
|
public function addAttributeToFilter($attribute, $condition = null)
|
|
{
|
|
$this->addFieldToFilter($this->_attributeToField($attribute), $condition);
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Specify collection select order by attribute value
|
|
* Backward compatibility with EAV collection
|
|
*
|
|
* @param string $attribute
|
|
* @param string $dir
|
|
* @return $this
|
|
*/
|
|
public function addAttributeToSort($attribute, $dir = 'asc')
|
|
{
|
|
$this->addOrder($this->_attributeToField($attribute), $dir);
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Set collection page start and records to show
|
|
* Backward compatibility with EAV collection
|
|
*
|
|
* @param int $pageNum
|
|
* @param int $pageSize
|
|
* @return $this
|
|
*/
|
|
public function setPage($pageNum, $pageSize)
|
|
{
|
|
$this->setCurPage($pageNum)->setPageSize($pageSize);
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Create all ids retrieving select with limitation
|
|
* Backward compatibility with EAV collection
|
|
*
|
|
* @param int $limit
|
|
* @param int $offset
|
|
* @return \Magento\Eav\Model\Entity\Collection\AbstractCollection
|
|
*/
|
|
protected function _getAllIdsSelect($limit = null, $offset = null)
|
|
{
|
|
$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');
|
|
$idsSelect->limit($limit, $offset);
|
|
return $idsSelect;
|
|
}
|
|
|
|
/**
|
|
* Retrieve all ids for collection
|
|
* Backward compatibility with EAV collection
|
|
*
|
|
* @param int $limit
|
|
* @param int $offset
|
|
* @return array
|
|
*/
|
|
public function getAllIds($limit = null, $offset = null)
|
|
{
|
|
return $this->getConnection()->fetchCol($this->_getAllIdsSelect($limit, $offset), $this->_bindParams);
|
|
}
|
|
|
|
/**
|
|
* Get search criteria.
|
|
*
|
|
* @return \Magento\Framework\Api\SearchCriteriaInterface|null
|
|
*/
|
|
public function getSearchCriteria()
|
|
{
|
|
return $this->searchCriteria;
|
|
}
|
|
|
|
/**
|
|
* Set search criteria.
|
|
*
|
|
* @param \Magento\Framework\Api\SearchCriteriaInterface $searchCriteria
|
|
* @return $this
|
|
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
|
|
*/
|
|
public function setSearchCriteria(\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria = null)
|
|
{
|
|
$this->searchCriteria = $searchCriteria;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Get total count.
|
|
*
|
|
* @return int
|
|
*/
|
|
public function getTotalCount()
|
|
{
|
|
return $this->getSize();
|
|
}
|
|
|
|
/**
|
|
* Set total count.
|
|
*
|
|
* @param int $totalCount
|
|
* @return $this
|
|
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
|
|
*/
|
|
public function setTotalCount($totalCount)
|
|
{
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Set items list.
|
|
*
|
|
* @param \Magento\Framework\Api\ExtensibleDataInterface[] $items
|
|
* @return $this
|
|
*/
|
|
public function setItems(array $items = null)
|
|
{
|
|
if (!$items) {
|
|
return $this;
|
|
}
|
|
foreach ($items as $item) {
|
|
$this->addItem($item);
|
|
}
|
|
return $this;
|
|
}
|
|
}
|