2

tag/product_collection リソース モデルをタグ名でフィルタリングしたい。

そのために私は以下のコードを書いています

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

次に、null配列のみを示します。

私がコメントするなら

$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 ) ) 

このモデルのようなクエリを使用してフィルタリングする方法。

私は両方のフィルター属性の方法を試しました

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

しかし、どれも機能していません。

4

2 に答える 2

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

この方法を使用すると、tag_name を要件としてフィルタリングできます。

getSelect() メソッドは select クエリを取得し、where メソッドを使用して where クエリを select クエリに追加するだけです。

その簡単な方法。正常に動作することを確認しました。

于 2013-10-25T13:07:46.050 に答える
1

こんにちは、コードの下のチェックが役立つ場合があります

 $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());
于 2013-10-25T10:15:27.230 に答える