Example #1
0
 /**
  * @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'];
 }