Question

J'ai une requête de sélection SQL complexe que je souhaite charger en tant que collection afin d'afficher les données dans une grille personnalisée, mais je ne parviens pas à convertir la requête en instruction getCollection équivalente de Magento.

SELECT
t1.increment_id AS "Order #",
t1.created_at as "Purchased On",
t1.billing_name as "Bill to Name",
t1.shipping_name as "Ship to Name",
t1.status as "Current Status",
IFNULL(MAX(CASE WHEN t2.status = "pending" THEN t2.created_at END), '') AS "Pending at",
IFNULL(MAX(CASE WHEN t2.status = "processing" THEN t2.created_at END), '') AS "Processing at"
FROM `sales_flat_order_grid` as t1
INNER JOIN `sales_flat_order_status_history` as t2 on t1.entity_id = t2.parent_id
GROUP BY t1.increment_id
ORDER BY t1.created_at DESC

Les jointures sont faciles mais le principal problème réside dans les colonnes complexes.Veuillez suggérer comment procéder.

Était-ce utile?

La solution

Quelque chose comme ça devrait faire le tour:

$table = Mage::getSingleton('core/resource')->getTableName('sales/order_status_history');
$collection = Mage::getResourceModel('sales/order_grid_collection');
$select = $collection
    ->getSelect()
    ->join(array('t2' => $table), 'main_table.entity_id = t2.parent_id', array())
    ->columns(array(
        "Order #" => 'increment_id',
        "Purchased On" => 'created_at',
        "Bill to Name" => 'billing_name',
        "Ship to Name" => 'shipping_name',
        "Current Status" => 'status',
    ))
    ->columns('IFNULL(MAX(CASE WHEN t2.status = "pending" THEN t2.created_at END), "") AS "Pending at"')
    ->columns('IFNULL(MAX(CASE WHEN t2.status = "processing" THEN t2.created_at END), "") AS "Processing at"')
    ->group('increment_id')
    ->order('created_at DESC');

Autres conseils

Recherchez le niveau de catégorie dans le produit : -

SÉLECTIONNER level,category_id,product_id DEPUIS catalog_category_product,catalog_category_entity où catalog_category_entity.entity_id = catalog_category_product.category_id ORDER BY product_id,level ASC

""Convertir cette requête au format Magento""

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top