本文整理汇总了PHP中Magento\Catalog\Model\ResourceModel\Product\Collection::addAttributeToFilter方法的典型用法代码示例。如果您正苦于以下问题:PHP Collection::addAttributeToFilter方法的具体用法?PHP Collection::addAttributeToFilter怎么用?PHP Collection::addAttributeToFilter使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Magento\Catalog\Model\ResourceModel\Product\Collection
的用法示例。
在下文中一共展示了Collection::addAttributeToFilter方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: addFilterByAttributes
/**
* {@inheritDoc}
*/
protected function addFilterByAttributes(ProductCollection $productCollection, array $attributes)
{
foreach ($attributes as $code => $option) {
if (!is_array($option)) {
$option = [$option];
}
$productCollection->addAttributeToFilter($code, ['in' => $option]);
}
}
示例2: prepareData
/**
* Prepare configurable data for export
*
* @param \Magento\Catalog\Model\ResourceModel\Product\Collection $collection
* @param int $productIds
* @return void
*/
public function prepareData($collection, $productIds)
{
$collection->addAttributeToFilter('entity_id', ['in' => $productIds])->addAttributeToFilter('type_id', ['eq' => \Magento\ConfigurableProduct\Model\Product\Type\Configurable::TYPE_CODE]);
while ($product = $collection->fetchItem()) {
$productAttributesOptions = $product->getTypeInstance()->getConfigurableOptions($product);
foreach ($productAttributesOptions as $productAttributeOption) {
$this->configurableData[$product->getId()] = [];
$variations = [];
$variationsLabels = [];
foreach ($productAttributeOption as $optValues) {
$variations[$optValues['sku']][] = $optValues['attribute_code'] . '=' . $optValues['option_title'];
if (!empty($optValues['super_attribute_label'])) {
$variationsLabels[$optValues['attribute_code']] = $optValues['attribute_code'] . '=' . $optValues['super_attribute_label'];
}
}
foreach ($variations as $sku => $values) {
$variations[$sku] = 'sku=' . $sku . ImportProduct::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR . implode(ImportProduct::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, $values);
}
$variations = implode(ImportProduct::PSEUDO_MULTI_LINE_SEPARATOR, $variations);
$variationsLabels = implode(ImportProduct::DEFAULT_GLOBAL_MULTI_VALUE_SEPARATOR, $variationsLabels);
$this->configurableData[$product->getId()] = ['configurable_variations' => $variations, 'configurable_variation_labels' => $variationsLabels];
}
}
}
示例3: addCollectionFilters
/**
* Add specific filters
*
* @param Collection $collection
* @return Collection
*/
protected function addCollectionFilters(Collection $collection)
{
$relatedProducts = [];
/** @var ProductLinkInterface $linkItem */
foreach ($this->productLinkRepository->getList($this->getProduct()) as $linkItem) {
if ($linkItem->getLinkType() !== $this->getLinkType()) {
continue;
}
$relatedProducts[] = $this->productRepository->get($linkItem->getLinkedProductSku())->getId();
}
if ($relatedProducts) {
$collection->addAttributeToFilter($collection->getIdFieldName(), ['nin' => [$relatedProducts]]);
}
return $collection;
}
示例4: prepareData
/**
* Prepare data for export
*
* @param \Magento\Catalog\Model\ResourceModel\Product\Collection $collection
* @param int $productIds
* @return $this
*/
public function prepareData($collection, $productIds)
{
$collection->addAttributeToFilter('entity_id', ['in' => $productIds])->addAttributeToFilter('type_id', ['eq' => \Magento\Catalog\Model\Product\Type::TYPE_BUNDLE]);
return $this->populateBundleData($collection);
}
示例5: addAttributeToFilter
/**
* Add attribute to filter
*
* @param AbstractAttribute|string $attribute
* @param array|null $condition
* @param string $joinType
* @return $this
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
*/
public function addAttributeToFilter($attribute, $condition = null, $joinType = 'inner')
{
switch ($attribute) {
case 'rt.review_id':
case 'rt.created_at':
case 'rt.status_id':
case 'rdt.title':
case 'rdt.nickname':
case 'rdt.detail':
$conditionSql = $this->_getConditionSql($attribute, $condition);
$this->getSelect()->where($conditionSql);
break;
case 'stores':
$this->setStoreFilter($condition);
break;
case 'type':
if ($condition == 1) {
$conditionParts = [$this->_getConditionSql('rdt.customer_id', ['is' => new \Zend_Db_Expr('NULL')]), $this->_getConditionSql('rdt.store_id', ['eq' => \Magento\Store\Model\Store::DEFAULT_STORE_ID])];
$conditionSql = implode(' AND ', $conditionParts);
} elseif ($condition == 2) {
$conditionSql = $this->_getConditionSql('rdt.customer_id', ['gt' => 0]);
} else {
$conditionParts = [$this->_getConditionSql('rdt.customer_id', ['is' => new \Zend_Db_Expr('NULL')]), $this->_getConditionSql('rdt.store_id', ['neq' => \Magento\Store\Model\Store::DEFAULT_STORE_ID])];
$conditionSql = implode(' AND ', $conditionParts);
}
$this->getSelect()->where($conditionSql);
break;
default:
parent::addAttributeToFilter($attribute, $condition, $joinType);
break;
}
return $this;
}
示例6: addFilterByAttributes
/**
* @param ProductCollection $productCollection
* @param array $attributes
* @return void
*/
protected function addFilterByAttributes(ProductCollection $productCollection, array $attributes)
{
foreach ($attributes as $code => $option) {
$productCollection->addAttributeToFilter($code, ['eq' => $option]);
}
}