/** * @param \Ess\M2ePro\Model\ActiveRecord\AbstractModel $model * @param string $fieldName * @param bool $asObjects * @param array $filters * @param array $sort * @return array|\Ess\M2ePro\Model\ActiveRecord\AbstractModel[] * @throws \Ess\M2ePro\Model\Exception\Logic */ protected function getRelatedItems(\Ess\M2ePro\Model\ActiveRecord\AbstractModel $model, $fieldName, $asObjects = false, array $filters = array(), array $sort = array()) { if (is_null($this->getId())) { throw new \Ess\M2ePro\Model\Exception\Logic('Method require loaded instance first'); } /** @var $tempCollection \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection */ $tempCollection = $model->getCollection(); $tempCollection->addFieldToFilter(new \Zend_Db_Expr("`{$fieldName}`"), $this->getId()); foreach ($filters as $field => $filter) { if ($filter instanceof \Zend_Db_Expr) { $tempCollection->getSelect()->where((string) $filter); continue; } $tempCollection->addFieldToFilter(new \Zend_Db_Expr("`{$field}`"), $filter); } foreach ($sort as $field => $order) { $order = strtoupper(trim($order)); if ($order != \Magento\Framework\Data\Collection::SORT_ORDER_ASC && $order != \Magento\Framework\Data\Collection::SORT_ORDER_DESC) { continue; } $tempCollection->setOrder($field, $order); } if ((bool) $asObjects) { return $tempCollection->getItems(); } $tempArray = $tempCollection->toArray(); return $tempArray['items']; }