【问题标题】:Magento SQL Query - Filter products by categoryMagento SQL 查询 - 按类别过滤产品
【发布时间】:2012-09-06 18:04:52
【问题描述】:

我有以下 SQL 查询来检索产品:

$query = "SELECT *,m.m_name,m.m_website FROM belvg_countdown c 
INNER JOIN catalog_product_entity e ON e.entity_id=c.entity_id
LEFT JOIN manufacturers_products mp ON c.entity_id=mp.product_id
LEFT JOIN manufacturers m ON mp.manufacturers_id=m.manufacturers_id
WHERE DATE_FORMAT(expire_datetime_off , '%Y-%m-%d') > DATE_FORMAT(NOW() , '%Y-%m-%d')
AND DATE_FORMAT(expire_datetime_on , '%Y-%m-%d')!=DATE_FORMAT(NOW() , '%Y-%m-%d')
AND entity_type='product'";

现在我还要添加一条语句,以仅加载名为“精选”类别的产品。 您能否帮助我了解我应该比较/查询哪些内容才能仅获得“特色”产品?

谢谢。

【问题讨论】:

    标签: php mysql sql magento magento-1.6


    【解决方案1】:

    看下面的网址,对你很有帮助

    Magento ->addCategoryFilter - filtering product collection by root category

    或尝试一下

    好的,我认为这可行,尚未进行太多测试,但似乎已经成功了。您需要首先获取您的商店根类别 ID,然后加入一些字段,以便您可以访问产品“category_id”,然后使用它进行过滤:

    $_rootcatID = Mage::app()->getStore()->getRootCategoryId();
    
    $_testproductCollection = Mage::getResourceModel('catalog/product_collection')
    ->joinField('category_id','catalog/category_product','category_id','product_id=entity_id',null,'left')
    ->addAttributeToFilter('category_id', array('in' => $_rootcatID))
    ->addAttributeToSelect('*');
    $_testproductCollection->load();
    
    foreach($_testproductCollection as $_testproduct){ 
        echo $this->htmlEscape($_testproduct->getName())."<br/>"; 
    };
    

    【讨论】:

    • 如您所见,我们还查询“belvg_countdown”。事实上,我们只选择特定范围内的产品。如何使用模型翻译上面的整个查询?可以举个例子吗?
    【解决方案2】:

    您不需要所有这些查询即可从特定类别中获取有效产品。 使用集合。

    $producs = Mage::getModel('catalog/category')->load(#categoryid or $_category->getId())
                ->getProductCollection()
                ->addAttributeToSelect('*')
                ->addAttributeToFilter('is_saleable', 1)
                ->joinField('is_in_stock', 'cataloginventory/stock_item', 'is_in_stock', 'product_id=entity_id', '{{table}}.stock_id=1', 'left');
    

    【讨论】:

    • 嗨,我帖子中的查询很难与倒计时扩展一起使用,它只选择一段时间内的产品,因此我们有一个普通的 sql。我可以使用类似的东西,但也可以在我们的自定义扩展表上使用 Inner Join 吗?
    • 你可以使用 thar 命令我显示在上面,在行尾,之前;你把这个 ->getSelect()->__toString();现在你有了这个集合命令的 sql 查询。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多