2010-11-29 5 views
0

Ich muss eine Sammlung von Bestellsendungen abfragen (Mage_Sales_Model_Mysql4_Order_Shipment_Collection). Ich möchte nur die Auftragslieferung sehen, zu der ein Kommentar geschrieben wurde, der einem bestimmten Text entspricht.Magento: Abrufen einer Sendungssammlung, die nur Sendungen enthält, die einen Kommentar enthalten, der ein bestimmtes Stück Text enthält

In nicht-EAV SQL, würde es in etwa so aussehen:

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 

Offensichtlich möchte ich Magento nativen Modell Methoden verwenden, um es zu erreichen:

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

Ist das möglich?

Antwort

2

Um die Dinge sauber zu halten, würde ich folgendes in mein eigenes Ressourcenmodell einfügen, das Mage_Sales_Model_Mysql4_Order_Shipment_Collection erweitert.

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

nennen es dann mit:

$shipments = Mage::getResourceModel('mymodule/my_custom_collection') 
    ->addAttributeToSelect('*') 
    ->addCommentsToFilter(array('Possible comment', 'Another possible comment')); 
Verwandte Themen