Beispiel #1
0
 /**
  * Add attribute to entities in collection
  *
  * If $attribute == '*' select all attributes
  *
  * @param array|string|integer|\Magento\Framework\App\Config\Element $attribute
  * @param bool|string $joinType flag for joining attribute
  * @return $this
  * @throws \Magento\Eav\Exception
  */
 public function addAttributeToSelect($attribute, $joinType = false)
 {
     if (is_array($attribute)) {
         $this->_eavConfig->loadCollectionAttributes($this->getEntity()->getType(), $attribute);
         foreach ($attribute as $a) {
             $this->addAttributeToSelect($a, $joinType);
         }
         return $this;
     }
     if ($joinType !== false && !$this->getEntity()->getAttribute($attribute)->isStatic()) {
         $this->_addAttributeJoin($attribute, $joinType);
     } elseif ('*' === $attribute) {
         $entity = clone $this->getEntity();
         $attributes = $entity->loadAllAttributes()->getAttributesByCode();
         foreach ($attributes as $attrCode => $attr) {
             $this->_selectAttributes[$attrCode] = $attr->getId();
         }
     } else {
         if (isset($this->_joinAttributes[$attribute])) {
             $attrInstance = $this->_joinAttributes[$attribute]['attribute'];
         } else {
             $attrInstance = $this->_eavConfig->getCollectionAttribute($this->getEntity()->getType(), $attribute);
         }
         if (empty($attrInstance)) {
             throw new \Magento\Eav\Exception(__('Invalid attribute requested: %1', (string) $attribute));
         }
         $this->_selectAttributes[$attrInstance->getAttributeCode()] = $attrInstance->getId();
     }
     return $this;
 }