Createat.phpを変更しています。ここで、ソースを確認できます。
簡単な概要:
$select->from(array('o' => $this->getTable('sales/order')), $columns)
->join(array('oi' => $selectOrderItem), 'oi.order_id = o.entity_id', array())
->where('o.state NOT IN (?)', array(
Mage_Sales_Model_Order::STATE_PENDING_PAYMENT,
Mage_Sales_Model_Order::STATE_NEW
));
...
$select->where('o.channel_name IS NULL');
$adapter->query($select
->insertFromSelect($this->getMainTable(), array_keys($columns)));
したがって、この時点ではすべてが良好です。私のsales_order_aggregated_createdテーブルには、すべての「Webサイト」の売上合計が含まれるようになりました。
$select->reset('where');
$select->where('o.channel_name = ?', 'Amazon');
$adapter->query($select
->insertFromSelect($this->getMainTable(), array_keys($columns)));
これが私の問題です。reset('where')して別のchannel_nameでフィルタリングし、新しい行をテーブルに挿入しようとすると、insertFromSelect()関数は "INSERT ... ON DUPLICATE KEY UPDATE"を使用して、値を上書きします前のクエリのテーブル内。
重複時に更新されない$select->someFunction()はありますか、またはinsertFromSelect()関数の定義はどこにありますか?または、おそらくこれを行う別の方法がありますか?