コレクションを使用して、いくつかのルート カテゴリのサブカテゴリをプログラムで取得します。
-
13-12-2019 - |
質問
カテゴリのコレクションクエリに取り組んでいます。
$categories_check = Mage::getModel('catalog/category')
->getCollection()
->setStoreId($storeId)
->addFieldToFilter('is_active', 1)
->addAttributeToFilter('path', array('like' => "1/{$rootCategoryId}/%"))
->setProductStoreId($storeId)
->setLoadProductCount(1)
->addAttributeToSelect('*');
ルートカテゴリの下のカテゴリを返します $rootCategoryId
. 。私の要件は、このクエリを変更して、ルート カテゴリの配列に対して機能するようにすることです。
配列を渡すときのように $rootcat = array('15,20,25,35');
これらのルート カテゴリの下にカテゴリが表示されます。
解決
編集:
最後の質問の基本として 複数のルート カテゴリ ID によるカテゴリ コレクションをプログラムで取得する . お答えさせていただきました。
作成した addFieldToFilter() の複数の OR 条件 結果を得るために パスフィールドの基本について
このスクリプトを実行すると、必要な結果が得られる可能性があります。
require_once "YOurMagentoDirapp/Mage.php"; umask(0); ini_set('display_errors', 1); Mage::app("admin"); $buildArray=array(); $rootId = Mage_Catalog_Model_Category::TREE_ROOT_ID; $rootids= array(12,15,18,20); foreach($rootid as $id){ $buildArray[]= array('attribute' =>'path','like'=>$rootId.'/'.$id.'/%'); } $collection = Mage::getModel('catalog/category')->getCollection() ->addFieldToFilter('is_active',1) ->addFieldToFilter($buildArray);
コレクションのクエリを取得します。これを試してみてください。
$CollectionObject->getSelect()->__toString();
あなたの場合。以下を使用してください
echo $categories_check->getSelect()->__toString();
使ってはいけません
- ->setStoreId($storeId)
->setProductStoreId($storeId)
->setLoadProductCount(1)
他のヒント
addAttributeToFilter
に条件の配列を渡すことができ、それはOR
と組み合わされます。
構文は次のとおりです。
->addAttributeToFilter(array(
array('attribute' => 'path', 'like' => "1/15/%"),
array('attribute' => 'path', 'like' => "1/20/%"),
array('attribute' => 'path', 'like' => "1/25/%"),
array('attribute' => 'path', 'like' => "1/35/%"),
))
.
入力配列のループでこの配列パラメータを作成し、設定します。
所属していません magento.stackexchange