/** * 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; }