商品が関連付けられているすべてのカテゴリを読み込もうとしていますが、最も深い子カテゴリのみを選択する必要があります。たとえば、製品はカテゴリに関連付けられており、women > trousers > jeans
表示さjeans
れる必要があります。
これまでに思いついたコードは正しいクエリを返しますが、コレクションにアクセスすると SQL エラーがスローされます。SQLSTATE[42S22]: Column not found: 1054 Unknown column 'cat_path' in 'on clause'
/* @var $_categoryNames Mage_Catalog_Model_Resource_Category_Collection */
$_categoryNames = $_product->getCategoryCollection();
$_categoryNames
->joinTable(
'catalog/category',
"entity_id = entity_id",
array('cat_path' => 'path')
)
->getSelect()
->where(
"cat_path not like( CONCAT( path, '/%' ) )"
);
die($_categoryNames->getSelect());
更新: blmage のおかげで、少なくとも適切なカテゴリを取得するための SQL ステートメントを見つけることができました。
SELECT *
FROM `catalog_category_entity`e
WHERE (SELECT COUNT(`entity_id`)
FROM `catalog_category_entity`c
WHERE c.path LIKE (CONCAT(e.path,'%'))
)=1