2011-06-26 10 views
5

Estoy siguiendo el tutorial de Ivan (Adding order attribute to the orders grid in Magento 1.4.1) para agregar una columna adicional a la tabla sales_order_grid (el texto de Descripción del envío) y funciona, excepto que no trae los datos anteriores desde sales_flat_order a la nueva columna en sales_order_grid.En Magento, ¿cómo llené una nueva columna en sales_order_grid con datos de sales_flat_order?

Mi script de instalación de SQL agrega la columna correctamente y porque estoy usando el mismo nombre de campo que en sales_flat_order, no creo que necesite un observador, sin embargo, el código para importar todos los datos de descripción de envío existentes en el shipping_description el campo no se está ejecutando.

¿Qué estoy haciendo mal?

My SQL script de instalación:

<?php 
/** 
* Setup scripts, add new column and fulfills 
* its values to existing rows 
* 
*/ 
/* @var $this Mage_Sales_Model_Mysql4_Setup */ 
$this->startSetup(); 

// Add column to grid table 
$this->getConnection()->addColumn(
    $this->getTable('sales/order_grid'), 
    'shipping_description', 
    "varchar(255) not null default ''" 
); 

// Add key to table for this field, 
// it will improve the speed of searching & sorting by the field 
$this->getConnection()->addKey(
    $this->getTable('sales/order_grid'), 
    'shipping_description', 
    'shipping_description' 
); 


// fill existing rows with data 
$select = $this->getConnection()->select(); 
$select->join(
    array('order'=>$this->getTable('sales/order')), 
    $this->getConnection()->quoteInto('order.entity_id = order_grid.entity_id',''), 
    array('shipping_description' => 'shipping_description') 
); 

$this->getConnection()->query(
    $select->crossUpdateFromSelect(
     array('order_grid' => $this->getTable('sales/order_grid')) 
    ) 
); 

$this->endSetup(); 

estoy usando Magento Community Edition 1.5.1!

¡Gracias por cualquier ayuda!

Respuesta

4

esto debería funcionar:

$select = $this->getConnection()->select(); 
$select->join(
    array('order_shipping'=>$this->getTable('sales/order')),//alias=>table_name 
    $this->getConnection()->quoteInto(
     'order_shipping.entity_id = order_grid.entity_id', 
     Mage_Sales_Model_Quote_Address::TYPE_SHIPPING 
    ),//join clause 
    array('shipping_description' => 'shipping_description')//fields to get 
); 
$this->getConnection()->query(
    $select->crossUpdateFromSelect(
     array('order_grid' => $this->getTable('sales/order_grid')) 
    ) 
); 

Si lo desea, echar un vistazo a mi extension :)
HTH

+0

perfecto! Miré tu extensión mientras intentaba unir la mía y entre la publicación de Ivan y tu extensión estuve tan cerca, solo me equivoqué al completar los datos :-) También me aseguraré de abrir la fuente de mi versión súper simple más adelante. . Gracias ! – simonyoung

+0

realidad que necesito un almacén de campo en la cuadrícula de órdenes de venta creé nombre de la columna en el almacén sales_flat_order y mesa sales_flat_order_grid y creé atributo: almacén con los valores // entrenamiento $ this-> addColumn ('almacén', array ( 'header' => Mage :: helper ('sales') -> __ ('Warehouse'), 'index' => 'warehouse', 'type' => 'options', 'width' => ' 70px ', ' options '=> Mage :: getSingleton (' eav/config ') -> getAttribute (' catálogo_producto ',' almacén '), )); sigue sin funcionar, ¿hay algún paso que deba seguir? – Rathinam

+0

https://i.snag.gy/H0Sqrh.jpg – Rathinam

Cuestiones relacionadas