Фильтр связанных элементов Magento по родительскому идентификатору - PullRequest
3 голосов
/ 19 января 2012

Я пытаюсь получить коллекцию выборок, но отфильтрован по идентификатору родительского продукта. Коллекция содержит атрибут parent_product_id, но, видимо, это не работает ... Фильтр не учитывается.

Это то, что я имею до сих пор:

$children = Mage::getResourceModel('bundle/selection_collection')
    ->addAttributeToSelect(array('product_id', 'selection_price_value'))
    ->setStoreId(Mage::app()->getStore()->getId())
    ->addAttributeToFilter('parent_product_id',$item->getProductId());

Возвращает коллекцию всех выборок, поэтому без фильтра. Есть ли способ получить только выбор одного конкретного продукта в комплекте? Обратите внимание, что я использую этот метод по причине ... Он должен основываться только на родительском идентификаторе.

Ответы [ 2 ]

3 голосов
/ 20 января 2012

Попробуйте следующее:

->addAttributeToSelect('*') //select all possible fields    
->addFieldToFilter('parent_product_id',array('eq' => $item->getProductId()));

Некоторые поля являются атрибутами, другие - просто полями в этой таблице.

Посмотрите на этот файл для некоторых примеров: / app / code / core /Mage / Bundle / модель / продукта / Type.php

3 голосов
/ 20 января 2012

Я бы предложил проверить, как запрос строится из коллекции:

$sql = Mage::getResourceModel('bundle/selection_collection')->getSelect()->__toString(); 
Mage::log($sql);`

Проверьте, действительно ли ваш фильтр там (в предложении WHERE) и запустите извлеченный SQL-запрос к вашей базе данных (вPhpMyAdmin или mysql-client, если у вас есть доступ к оболочке).Вы должны увидеть источник проблемы.

Вы также можете попробовать метод dirty и помешать объекту Zend_Select коллекции:

$collection = Mage::getResourceModel('bundle/selection_collection')
    ->addAttributeToSelect(array('product_id', 'selection_price_value'))
    ->setStoreId(Mage::app()->getStore()->getId());
$collection->getSelect()->where('`selection`.`parent_product_id` = '.$item->getProductId());
...