如何在Magento中使用没有websiteID的产品进行产品收集?

时间:2014-10-22 07:03:04

标签: magento

我知道我在Magento目录中有一些完全缺少websiteID的产品。我试图找到这样的产品:

  $products = Mage::getModel('catalog/product')
  ->getCollection()
  ->addAttributeToSelect('*')
  ->addAttributeToFilter('website_ids', 'null');

然而这会崩溃。在没有设置website_id的情况下获取产品集合的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

所有产品网站ID都存储在catalog_product_website中。如果您在此处打开此表,则可以看到与网站相关联的产品。

这是过滤器,

<?php

require_once('app/Mage.php'); //Path to Magento
umask(0);
Mage::app();

echo '<pre>';
$collection = Mage::getResourceModel('catalog/product_collection');
$collection->addWebsiteFilter('0');   

//echo $collection->getSelect(); exit;
$collection->getFirstItem();
 // ->addAttributeToFilter('website_ids', 'null');

//echo $orders->getSelect();

//exit;

 print_r($collection);

在此$collection->addWebsiteFilter('0');过滤网站主题ID(目前为0),因此您可以将值更改为1,0,2或NULL。就是这样。

在您的情况下,请尝试使用NULL或空白,例如&#39;&#39;。

<强>更新

如果您使用''进行过滤,则会收到错误,因为表catalog_product_website具有带有产品实体ID和网站ID的外键,这意味着website_id无法解决问题是空的。所以尝试直接查询。在magento中,您可以通过此方式从集合中获取查询,

echo $collection->getSelect(); exit;

或使用此,

SELECT `e`.* FROM `catalog_product_entity` AS `e`
 INNER JOIN `catalog_product_website` AS `product_website` ON product_website.product_id = e.entity_id AND product_website.website_id IN('')

如果您有任何疑问,请在此处发表评论。

答案 1 :(得分:1)

这对我有用

SELECT catalog_product_entity.entity_id
FROM catalog_product_entity
LEFT JOIN catalog_product_website
    ON catalog_product_entity.entity_id = catalog_product_website.product_id
WHERE catalog_product_website.product_id IS NULL