Magento: получение коллекции отправлений, содержащей только отправления, содержащие комментарий, содержащий определенный фрагмент текста - PullRequest
0 голосов
/ 29 ноября 2010

Мне нужно запросить набор заказов (Mage_Sales_Model_Mysql4_Order_Shipment_Collection). Я хочу видеть только ту доставку заказа, в которой был написан комментарий, соответствующий определенному фрагменту текста.

В не-EAV SQL это будет выглядеть примерно так:

SELECT shipments.id
FROM shipments
JOIN comments ON (
    shipments.id = comments.shipment_id
    AND comments.content IN('Possible comment', 'Another possible comment')
    )
GROUP BY shipments.id

Очевидно, я хочу использовать методы модели Magento для этого:

$shipments = Mage::getResourceModel('sales/order_shipment_collection')
    ->addAttributeToSelect('*')
    // ??
    // ??
    ->load();

Возможно ли это?

1 Ответ

2 голосов
/ 30 ноября 2010

Чтобы держать вещи в порядке, я бы поместил следующее в мою собственную модель ресурсов, которая расширяет Mage_Sales_Model_Mysql4_Order_Shipment_Collection.

public function addCommentsToFilter($comments = array())
{
    return $this->join('sales/shipment_comment', 'main_table.entity_id=parent_id', 'comment')
        ->addFieldToFilter('comment', array('in'=>$comments));
}

Затем назовите его с помощью:

$shipments = Mage::getResourceModel('mymodule/my_custom_collection')
    ->addAttributeToSelect('*')
    ->addCommentsToFilter(array('Possible comment', 'Another possible comment'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...