Frage

Dies ist Teil des AW -Blog -Moduls. Ich habe 2 Tische.

aw_blog
post_id | tags
1 tag1
2 tag2
3 tag3

aw_blog_post_cat
cat_id | post_id
1 1
1 3
2 3

Ich habe diese SQL -Aussage und versuche es mit Magento Way zu tun:

SELECT `aw_blog`.`tags` FROM `aw_blog_post_cat` RIGHT JOIN  `aw_blog` on `aw_blog`.`post_id`=`aw_blog_post_cat`.`post_id` WHERE `aw_blog_post_cat`.`cat_id`=1

Ich habe so etwas ausprobiert:

$collection = Mage::getModel('blog/blog')->getCollection()
->getSelect()->joinRight(array("post_cat" => $this->getTable('aw_blog_post_cat')), 'main_table.post_id = post_cat.post_id', array()); 

davon VerknüpfungAber ohne Glück. Es wird kein Modell für implementiert aw_blog_post_cat Tisch

War es hilfreich?

Lösung

Ich habe nicht getestet, weil ich das Modul nicht auf einer Magento -Installation installiert habe, aber ich habe den Quellcode überprüft und ich bin mir nicht sicher, ob es das neueste ist. Sie haben in der Sammlung der Blog -Klasse aw_blog_model_mysql4_blog_collection eine Methode, die hilft, den Inhalt basierend auf der Kategorie -ID zu filtern

class AW_Blog_Model_Mysql4_Blog_Collection
...
public function addCatFilter($catId)
{
    $this->getSelect()->join(
        array('cat_table' => $this->getTable('post_cat')),
        'main_table.post_id = cat_table.post_id',
        array()
    )
    ->where('cat_table.cat_id = ?', $catId);

    return $this;
}

Dann können Sie in Ihrem Code verwenden, das:

$collection = Mage::getModel('blog/blog')->getCollection()
    ->addCatFilter(1);

$items = $collection->getItems();

Jetzt erhalten Sie alle Post -Artikel.

Andere Tipps

Der Fishpig -Blog hat einen hervorragenden Artikel über Schreiben benutzerdefinierter Abfragen. Es erklärt ausführlich, wie Sie die Abfragemanienressourcen und TableName erhalten.

In Ihrem Fall wäre es so etwas

$resource = Mage::getSingleton('core/resource');
$read = $resource->getConnection('core_read');

$results = $read->fetchAll("SELECT * FROM {$resource->getTableName('blog/post_cat')}"); // change the query to your needs

var_dump($results);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top