Question

Cela fait partie du module blog aw. J'ai 2 tables.

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

J'ai cette déclaration SQL et je suis en train de le faire avec la manière magento:

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

J'ai essayé quelque chose comme ça:

$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()); 

à partir de ce lien Mais sans succès. Il existe pas de modèle mis en œuvre pour la table de aw_blog_post_cat

Était-ce utile?

La solution

Je n'ai pas testé parce que je n'ai pas le module installé sur une installation Magento mais j'ai vérifié le code source et je ne suis pas sûr si elle est plus récente. Vous avez dans la collection de la classe Blog AW_Blog_Model_Mysql4_Blog_Collection une méthode qui permet de filtrer le contenu en fonction de l'identifiant de la catégorie

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;
}

Ensuite, vous pouvez utiliser dans votre code:

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

$items = $collection->getItems();

Alors maintenant, vous obtenez tous les éléments de poste.

Autres conseils

Le blog Fishpig a un excellent article sur écrire des requêtes personnalisées . Il explique en détail comment obtenir les ressources de la requête et les noms de tables.

Dans votre cas, il serait quelque chose comme ceci

$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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top