Frage

Wenn ich eine Produktsammlung in einer Umgebung mit mehreren Filialen habe und mit meinem Sammelergebnis auch einen spezifischen Attributewert aus einem anderen Geschäft abrufen möchte, wie kann dies dann der beste Weg tun, um dies zu tun?

Zum Beispiel habe ich Englisch, Französisch und deutsch.

Jedes Produkt verfügt über ein benutzerdefiniertes Attribut namens Company_Description. Ich möchte in der Lage sein, die Sammlung aus einem Geschäft zu erhalten, aber auch die Firma_Description abzurufen, da sie auch in den anderen 2 -Store -Ansichten festgelegt ist.

Es braucht einen Join, aber ich kann nicht wie das manuelle EAV -Verbindungsbereich am besten machen.

So -

// In english store context
$productCollection = Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect('company_description');

Ich muss dann etwas mit einem Join tun, damit ich alle 3 Beschreibungen als:

company_description
company_description_fr
company_description_de
War es hilfreich?

Lösung

Entsprechend Mage_Eav_Model_Entity_Collection_Abstract::joinAttribute ($alias, $attribute, $bind, $filter, $joinType, $storeId) Sie können ein Geschäft angeben. Sobald sich das Attribut angeschlossen hat, ist es vorhanden und in jeder Zukunft verwenden Sie diese neue Tabelle, nützlich, wenn Sie sie auch filtern möchten. joinAttribute() fügt hinzu, um trotzdem auszuwählen, sodass keine Verwendung verwendet werden muss addAttributeToSelect() danach.

$productCollection = Mage::getModel('catalog/product')->getCollection()
    ->setStoreId(0)    // To ensure all other attributes are default
    ->addAttributeToSelect('company_description')

    // French store is 3
    ->joinAttribute('company_description_fr', 'catalog_product/company_description',
                    'entity_id', null, 'inner', 3)

    // German store is 2
    ->joinAttribute('company_description_de', 'catalog_product/company_description',
                    'entity_id', null, 'inner', 2);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top