Convertir SQL Select en instruction Magento getCollection
-
12-12-2019 - |
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.
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""