如何按magento中的标记名称过滤tag / product_collection资源模型

时间:2013-10-25 09:50:45

标签: php magento model

我希望按标记名称过滤标记/ product_collection资源模型。

因为我已经写了下面的代码

$collection = Mage::getResourceModel('tag/product_collection');
$collection->addFieldToFilter("name",array('like'=>'%dixit%'));
print_r($collection->getData());

然后它只显示空数组。

如果我要发表评论

$collection->addFieldToFilter("name",array('like'=>'%dixit%'));

此行然后显示在下面的输出

Array ( [0] => Array ( [entity_id] => 323 [entity_type_id] => 4 [attribute_set_id] => 4 [type_id] => simple [sku] => 8018-90 [has_options] => 0 [required_options] => 0 [created_at] => 2010-03-11 12:17:46 [updated_at] => 2013-07-24 12:12:56 [product_id] => 323 [item_store_id] => 1 [tag_id] => 1 [name] => dixit [tag_status] => 0 [tag_name] => dixit ) ) 

那么如何过滤使用like query这个模型。

我尝试了两种过滤器属性方式

$collection->addFieldToFilter("name",array('like'=>'%dixit%'));
$collection->addAttributeToFilter("name",array('like'=>'%dixit%'));

但他们都没有工作。

2 个答案:

答案 0 :(得分:2)

    $collection->getSelect()->Where(' name like ?',"% dixit %");

使用这种方式,您可以将tag_name过滤为需求。

getSelect()方法得到选择查询,我们只是追加查询选择查询使用where where方法。

它的简单方法。 我检查它的工作正常。

答案 1 :(得分:0)

你好检查下面的代码可能会对你有所帮助

 $tagName='dixit';
$tagId= Mage::getModel('tag/tag')->loadByName($tagName)->getId();
$tagId = 3;  
$products = Mage::getResourceModel('tag/product_collection')
                ->addAttributeToSelect('sku')
                ->addAttributeToSelect('name')
                ->addTagFilter($tagId);

print_r($products->getData());