В Magento, как мне заполнить новый столбец в sales_order_grid данными из sales_flat_order? - PullRequest
5 голосов
/ 26 июня 2011

Я следую инструкциям Ивана ( Добавление атрибута заказа в сетку заказов в Magento 1.4.1 ), чтобы добавить дополнительный столбец в таблицу sales_order_grid (текст описания доставки), и он работает, за исключением того, что он не приносит старые данные от sales_flat_order до нового столбца в sales_order_grid.

Мой сценарий установки SQL правильно добавляет столбец, и поскольку я использую то же имя поля, что и в sales_flat_order, я не думаю, что мне нужен наблюдатель, однако код для импорта всех существующих данных описания доставки в поле shipping_description не работает

Что я делаю не так?

Мой скрипт установки SQL:

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

Я использую Magento 1.5.1 Community Edition!

Спасибо за любую помощь!

1 Ответ

4 голосов
/ 26 июня 2011

это должно работать:

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

Если хотите, взгляните на мое расширение :)
HTH

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...