2014-03-12 94 views
0

我创建了一个观察者。 当它触发时,会提取所有信息,但不会将数据插入到数据库中。不能保存在事件观察者

config.xml中

<config> 
    <global> 
     <models> 
      <connector_mysql4> 
       <class>Custom_Connector_Model_Mysql4</class> 
       <entities> 
        <taxordermap> 
         <table>tax_order_map</table> 
        </taxordermap> 
       </entities> 
      </connector_mysql4> 
     </models> 
     <events> 
      <sales_order_place_after> 
       <observers> 
        <orderGetShopVatSettings> 
         <class>Connector_Model_Observers_Order</class> 
         <method>setSetting</method> 
        </orderGetShopVatSettings> 
       </observers> 
      </sales_order_place_after> 
     </events> 
    </global> 
</config> 

型号/ Taxordermap.php

<?php 

class Connector_Model_Taxordermap extends Mage_Core_Model_Abstract{ 
    /** 
    * consturctor 
    * Initializing the opject 
    */ 
    public function _construct(){ 
     parent::_construct(); 
     $this->_init('connector/taxordermap'); 
    } 
} 

型号/ Mysql4/Taxordermap.php

<?php 
class Connector_Model_Mysql4_Taxordermap extends Mage_Core_Model_Mysql4_Abstract{ 
    /** 
    * Constructor 
    */ 
    protected function _construct(){ 
     $this->_init('connector/actaxordermap','orderid'); 
    } 
} 

和finaly

型号/ Mysql4/AcTaxordermap/COLLEC tion.php

<?php 
class Connector_Model_Mysql4_Taxordermap_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract{ 
    /** 
    * Constructor 
    */ 
    public function _construct(){ 
     $this->_init('connector/actaxordermap'); 
    } 
} 

最后但并非最不重要的:

型号/观察员/ Order.php

<?php 

class Connector_Model_Observers_Order{ 
    public function setSetting(Varien_Event_Observer $observer){ 
     $order = $observer->getEvent()->getOrder(); 
     $orderid = $order->getId(); 
     Mage::log("orderid: $orderid"); 
     $shippingTax = (int)Connector_Model_System_Service::ShippingIncludesTax(); 
     $tax = (int)Connector_Model_System_Service::priceIncludesTax(); 
     Mage::log("tax: $tax"); 
     Mage::log("shipping: $shippingTax"); 
     Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); 
     $model = Mage::getModel('connector/taxordermap'); 
     $model->setOrderid($orderid); 
     $model->setTax($tax); 
     $model->setShipping($shippingTax); 
     Mage::log($model); 
     try{ 
      $model->save(); 
     }catch(Exception $e){ 
      Mage::log("error: $e->getMessage();"); 
     } 
     Mage::log($model); 
    } 
} 

这些都是信息我进入登录

2014-03-12T14:53:29+00:00 DEBUG (7): orderid: 59 
2014-03-12T14:53:29+00:00 DEBUG (7): tax: 0 
2014-03-12T14:53:29+00:00 DEBUG (7): shipping: 1 
2014-03-12T14:53:29+00:00 DEBUG (7): Connector_Model_Taxordermap Object 
(
[_eventPrefix:protected] => core_abstract 
[_eventObject:protected] => object 
[_resourceName:protected] => connector/taxordermap 
[_resource:protected] => 
[_resourceCollectionName:protected] => connector/taxordermap_collection 
[_cacheTag:protected] => 
[_dataSaveAllowed:protected] => 1 
[_isObjectNew:protected] => 
[_data:protected] => Array 
    (
     [orderid] => 59 
     [tax] => 0 
     [shipping] => 1 
    ) 

[_hasDataChanges:protected] => 1 
[_origData:protected] => 
[_idFieldName:protected] => 
[_isDeleted:protected] => 
[_oldFieldsMap:protected] => Array 
    (
    ) 

[_syncFieldsMap:protected] => Array 
    (
    ) 

) 

2014-03-12T14:53:29+00:00 DEBUG (7): Connector_Model_Taxordermap Object 
(
[_eventPrefix:protected] => core_abstract 
[_eventObject:protected] => object 
[_resourceName:protected] => connector/taxordermap 
[_resource:protected] => 
[_resourceCollectionName:protected] => connector/taxordermap_collection 
[_cacheTag:protected] => 
[_dataSaveAllowed:protected] => 1 
[_isObjectNew:protected] => 
[_data:protected] => Array 
    (
     [orderid] => 59 
     [tax] => 0 
     [shipping] => 1 
    ) 

[_hasDataChanges:protected] => 
[_origData:protected] => 
[_idFieldName:protected] => orderid 
[_isDeleted:protected] => 
[_oldFieldsMap:protected] => Array 
    (
    ) 

[_syncFieldsMap:protected] => Array 
    (
    ) 

) 

据我所见,数据已保存,但未出现在数据库中。 它确实很简单,不存储,尽管它尾巴存储它。

回答

0

如果这是你的config.xml完成​​,你可能忘了添加一个模型节点和resourceModel为你的模型:

<models> 
    <connector> 
     <class>Connector_Model</class> 
     <resourceModel>connector_mysql4</resourceModel> 
    </connector> 

    <connector_mysql4> 
     <class>Connector_Model_Mysql4</class> 
     <entities> 
      <taxordermap> 
       <table>tax_order_map</table> 
      </taxordermap> 
     </entities> 
    </connector_mysql4> 
</models> 

此外,对于第一种观点,我觉得你的_init()调用不是精细。我想它应该是connector/taxordermap而不是connector/actaxordermap。 如果您有任何问题,请去!