123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Sales\Model\ResourceModel\Order\Item;
- use \Magento\Sales\Model\ResourceModel\Order\Collection\AbstractCollection;
- /**
- * Flat sales order payment collection
- *
- * @api
- * @author Magento Core Team <core@magentocommerce.com>
- * @since 100.0.2
- */
- class Collection extends AbstractCollection implements \Magento\Sales\Api\Data\OrderItemSearchResultInterface
- {
- /**
- * Event prefix
- *
- * @var string
- */
- protected $_eventPrefix = 'sales_order_item_collection';
- /**
- * Event object
- *
- * @var string
- */
- protected $_eventObject = 'order_item_collection';
- /**
- * Order field for setOrderFilter
- *
- * @var string
- */
- protected $_orderField = 'order_id';
- /**
- * Model initialization
- *
- * @return void
- */
- protected function _construct()
- {
- $this->_init(\Magento\Sales\Model\Order\Item::class, \Magento\Sales\Model\ResourceModel\Order\Item::class);
- }
- /**
- * Assign parent items on after collection load
- *
- * @return $this
- */
- protected function _afterLoad()
- {
- parent::_afterLoad();
- /**
- * Assign parent items
- */
- foreach ($this as $item) {
- $this->_resource->unserializeFields($item);
- if ($item->getParentItemId()) {
- $item->setParentItem($this->getItemById($item->getParentItemId()));
- }
- }
- return $this;
- }
- /**
- * Set random items order
- *
- * @return $this
- */
- public function setRandomOrder()
- {
- $this->getConnection()->orderRand($this->getSelect());
- return $this;
- }
- /**
- * Set filter by item id
- *
- * @param mixed $item
- * @return $this
- */
- public function addIdFilter($item)
- {
- if (is_array($item)) {
- $this->addFieldToFilter('item_id', ['in' => $item]);
- } elseif ($item instanceof \Magento\Sales\Model\Order\Item) {
- $this->addFieldToFilter('item_id', $item->getId());
- } else {
- $this->addFieldToFilter('item_id', $item);
- }
- return $this;
- }
- /**
- * Filter collection by specified product types
- *
- * @param array $typeIds
- * @return $this
- */
- public function filterByTypes($typeIds)
- {
- $this->addFieldToFilter('product_type', ['in' => $typeIds]);
- return $this;
- }
- /**
- * Filter collection by parent_item_id
- *
- * @param int $parentId
- * @return $this
- */
- public function filterByParent($parentId = null)
- {
- if (empty($parentId)) {
- $this->addFieldToFilter('parent_item_id', ['null' => true]);
- } else {
- $this->addFieldToFilter('parent_item_id', $parentId);
- }
- return $this;
- }
- }
|