コレクションを使用して、いくつかのルート カテゴリのサブカテゴリをプログラムで取得します。

magento.stackexchange https://magento.stackexchange.com//questions/85559

質問

カテゴリのコレクションクエリに取り組んでいます。

$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/%"),
))
.

入力配列のループでこの配列パラメータを作成し、設定します。

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top