Frage

Ich passe Magento an FAQ -Erweiterung Für Sortierfaq -Elemente nach Kategorie.Below -Sammlung wird verwendet, um alle Elemente aktive FAQ -Elemente zu erhalten.

$collection = Mage :: getModel('flagbit_faq/faq')->getCollection() 
              ->addStoreFilter(Mage :: app()->getStore())
              ->addIsActiveFilter();  

Es gibt eine Beziehungstabelle "faq_category_item"

Tabellenstruktur:-

category_id    faq_id
   1              1
   2              2
   1              3 

Also entscheide ich mich, zwei Tabellen anzuschließen. Was ich ausprobiert habe, ist unten.

$tbl_faq_item = Mage::getSingleton('core/resource')->getTableName('faq_category_item');

$collection = Mage :: getModel('flagbit_faq/faq')->getCollection() 
                  ->getSelect()
                  ->join(array('t2' => $tbl_faq_item),'main_table.faq_id = t2.faq_id','t2.category_id')  
                  ->addStoreFilter(Mage :: app()->getStore())
                  ->addIsActiveFilter();

Was ist falsch und wie kann ich die jeweiligen Kategorienelemente filtern? Bitte teilen Sie einige gute Links, um Magento -Modellsammlungen zu lernen.

Danke im Voraus

War es hilfreich?

Lösung

Der zurückgegebene Typ von getSelect() und join() ist ein ausgewähltes Objekt, nicht die Sammlung, die addStoreFilter() und addIsActiveFilter() gehören. Der ausgewählte Teil muss später in der Kette auftreten:

$collection = Mage :: getModel('flagbit_faq/faq')->getCollection() 
              ->addStoreFilter(Mage :: app()->getStore())
              ->addIsActiveFilter();
// Cannot append getSelect right here because $collection will not be a collection
$collection->getSelect()
           ->join(array('t2' => $tbl_faq_item),'main_table.faq_id = t2.faq_id','t2.category_id');

Andere Tipps

Versuchen Sie diese Funktion von

Mage_Eav_Model_Entity_Collection_Abstract

 /**
 * Join a table
 *
 * @param string|array $table
 * @param string $bind
 * @param string|array $fields
 * @param null|array $cond
 * @param string $joinType
 * @return Mage_Eav_Model_Entity_Collection_Abstract
 */
public function joinTable($table, $bind, $fields = null, $cond = null, $joinType = 'inner')
{

Um sich den Tischen anzuschließen, können Sie dies mögen:

$collection->joinTable('table-to-join','left.id=right.id',array('alias'=>'field'),'some condition or null', joinType(left right inner));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top