$model->save() Không thể save dữ liệu xuống database

Thảo luận trong 'Yêu cầu module - chức năng cho Magento' bắt đầu bởi tran van dai, 12 Tháng một 2013.

  1. tran van dai

    tran van dai New Member

    model->save() Không lưu dữ liệu xuống db. Magento cache turned off.
    Mình không nhận bất kỳ lỗi nào, không chạy và catch luôn,
    Nhưng khi add DL vào database bằng phpmyadmin, và ở controller, em test thử load DL đó lên
    print_r(Mage::getModel('themeeditor/customersite')->load(1)->getData());exit;
    thì lên ok
    Code của mình như sau:
    PHP:
    try {
        
    $cusSite Mage::getModel('themeeditor/customersite');
        
    $cusSite->setData(array("customer_id" => 1"website_id" => 1"store_group" => 1"store_id" => 1));
        
    $query $cusSite->save();
    }
    catch(
    Exception $e) {
        echo 
    $e->getMessage;exit;
    }
    Code ở file code\local\FS\ThemeEditor\etc\config.xml

    PHP:
            <models>
                <
    themeeditor>
                    <class>
    FS_ThemeEditor_Model</class>
                    <
    resourceModel>themeeditor_mysql4</resourceModel>
                </
    themeeditor>
                <
    themeeditor_mysql4>
                    <class>
    FS_ThemeEditor_Model_Mysql4</class>
                    <
    entities>
                        <
    customersite>
                            <
    table>themeeditor_customersite</table>
                        </
    customersite>
                    </
    entities>
                </
    themeeditor_mysql4>
            </
    models>
     
            <
    resources>       
                <
    themeeditor_setup>
                    <
    setup>
                        <
    module>FS_ThemeEditor</module>
                        <class>
    Mage_catalog_Model_Resource_Eav_Mysql4_Setup</class>
                    </
    setup>
                    <
    connection>
                        <use>
    core_setup</use>
                    </
    connection>
                </
    themeeditor_setup>
                <
    themeeditor_write>
                    <
    connection>
                        <use>
    core_write</use>
                    </
    connection>
                </
    themeeditor_write>
                <
    themeeditor_read>
                    <
    connection>
                        <use>
    core_read</use>
                    </
    connection>
                </
    themeeditor_read>
            </
    resources>
    Code ở file code\local\FS\ThemeEditor\Model\Customersite.php
    PHP:
    <?php
     
    class FS_ThemeEditor_Model_Customersite extends Mage_Core_Model_Abstract
    {
        public function 
    _construct()
        {
            
    parent::_construct();
            
    $this->_init('themeeditor/customersite');
        }
    }
    Code ở file code\local\FS\ThemeEditor\Model\Mysql4\Customersite.php
    PHP:
    <?php
     
    class FS_ThemeEditor_Model_Mysql4_Customersite extends Mage_Core_Model_Mysql4_Abstract

        public function 
    _construct()
        { 
            
    // Note that the billingaddress_id refers to the key field in your database table.
            
    $this->_init('themeeditor/customersite''customer_id');
        }
    }
    Code ở file code\local\FS\ThemeEditor\Model\Mysql4\Customersite\Collection.php
    PHP:
    <?php
     
    class FS_ThemeEditor_Model_Mysql4_Customersite_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
    {
        public function 
    _construct()
        {
            
    parent::_construct();
            
    $this->_init('themeeditor/customersite');
        }
    }
    Code ở file code\local\FS\ThemeEditor\sql\themeeditor_setup\mysql4-install-0.1.0.php
    PHP:
    <?php
    $installer 
    $this;
     
    $installer->startSetup();
     
    $installer->run("
    DROP TABLE IF EXISTS 
    {$this->getTable('themeeditor_customersite')};
    CREATE TABLE 
    {$this->getTable('themeeditor_customersite')}(
        `customer_id` int(10) unsigned NOT NULL,
        `website_id` int(10) unsigned NOT NULL,
        `store_id` int(10) unsigned NOT NULL,
        `store_group` int(10) unsigned NOT NULL,
        FOREIGN KEY (`customer_id`) REFERENCES 
    {$this->getTable('customer_entity')} (`entity_id`) ,
        PRIMARY KEY (`customer_id`)
    )ENGINE=InnoDB DEFAULT CHARSET=utf8;"
    );
     
    $installer->endSetup();
    Mình cũng không biết tại sao nó lại không thể save DL và database được
    Mong các Bác có thể giúp đỡ
    Thanks

    Bài viết khác cùng chuyên mục:

  2. dat.nguyen

    dat.nguyen New Member

    1.Database của bạn thiết kế mình thấy không hợp lí lắm.
    Bạn nên thêm 1 field cho id tự tăng, không nên dùng FOREIGN KEY (`customer_id`) REFERENCES {$this->getTable('customer_entity')} (`entity_id`) ,PRIMARY KEY (`customer_id`).
    2. Trước khi save bạn dùng
    var_dump($cusSite); xem dữ liệu đã sẵn sàng lưu chưa.
    $query = $cusSite->save();

    Chào bạn.
    Tuấn Đạt thích bài này.

Chia sẻ trang này