Pregunta

Esto es parte del módulo de blog AW. Tengo 2 tablas.

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

Tengo esa declaración SQL y estoy tratando de hacerlo con Magento Way:

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

Intenté algo así:

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

a partir de ese EnlacePero sin suerte. No hay modelo implementado para aw_blog_post_cat mesa

¿Fue útil?

Solución

No probé porque no tengo el módulo instalado en una instalación de Magento, pero verifiqué el código fuente y no estoy seguro de si es el último. Tiene en la colección de la clase de blog aw_blog_model_mysql4_blog_collection Un método que ayuda a filtrar el contenido en función de la ID de categoría

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

Entonces puede usar en su código que:

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

$items = $collection->getItems();

Así que ahora obtienes todos los artículos de publicación.

Otros consejos

El blog FishPig tiene un excelente artículo sobre Escribir consultas personalizadas. Explica en detalle cómo obtener los recursos de consulta y los tablas.

En tu caso sería algo como esto

$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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top