Magento学习手记(第十一天)

第十一天

一、 数据库实例测试:数据库安装及更新脚本

    当自定义模块需要使用定制化数据库表时,使用Magento的机制可以自动触发脚本。

    1. 在模块配置文件中添加配置,在resources标签下;

1             <databasetest_setup>
2                 <setup>
3                     <module>YEMA_Databasetest</module>
4                     <class>Mage_Eav_Model_Entity_Setup</class>
5                 </setup>
6                 <connection>
7                     <use>core_setup</use>
8                 </connection>
9             </databasetest_setup>

    2. 创建相关文件夹/Databasetest/sql/databasetest_setup/;

    3. 创建安装脚本,文件命名规则为install-<version_number_config_xml>.php,新疆xml文件install-0.0.1.php;

    4. 编辑install-0.0.1.php,刷新模块前端页面后执行,这时除了脚本里写的相关数据操作外,在core_resource表中会记录该脚本的执行版本,之后系统根据该版本号及upgrade-<old_vesion>-<new_version>来判断是否进行数据更新。

 

二、 数据库实例测试:通过Model创建flat表

    1. 配置模块config.xml文件,增加内容在<databasetest_resource>标签下;

1                 <entities>
2                     <subscription>
3                         <table>databasetest_subscription</table>
4                     </subscription>
5                 </entities>

    2. 创建upgrade-0.0.1-0.0.2.php文件;

 1 <?php
 2 $installer = $this;
 3 $installer->startSetup ();
 4 $adapter = $installer->getConnection ();
 5 
 6 $table = $adapter->newTable($installer->getTable('databasetest/subscription'))
 7     ->addColumn('subscription_id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array(
 8             'identity' => true,
 9             'unsigned' => true,
10             'nullable' => false,
11             'primary'  => true,
12         ), 'Subscription ID')
13     ->addColumn('created_at', Varien_Db_Ddl_Table::TYPE_TIMESTAMP, null,
14         array(
15             'nullable' => false,
16             'default'  => Varien_Db_Ddl_Table::TIMESTAMP_INIT
17         ), 'Created At')
18     ->addColumn('updated_at', Varien_Db_Ddl_Table::TYPE_TIMESTAMP, null,
19         array(
20             'nullable'  => true
21         ), 'Updated At')
22     ->addColumn('firstname', Varien_Db_Ddl_Table::TYPE_TEXT,
23         64, array('nullable'  => false), 'First Name')
24     ->addColumn('lastname', Varien_Db_Ddl_Table::TYPE_TEXT,
25         64, array('nullable'  => false), 'Last Name')
26        ->addColumn('email', Varien_Db_Ddl_Table::TYPE_TEXT,
27         64, array('nullable'  => false), 'Email Address')
28     ->addColumn('status', Varien_Db_Ddl_Table::TYPE_TEXT,
29         32, array(
30                 'nullable' => false,
31                 'defualt' => 'pending',
32         ), 'Status')
33     ->addColumn('message', Varien_Db_Ddl_Table::TYPE_TEXT,
34         64, array(
35                 'unsigned' => true,
36                 'nullable' => false,
37         ), 'Subscription Note')
38     ->addIndex($installer->getIdxName('databasetest/subscription', array('email')), array('email'))
39     ->setComment('Databasetest Subscription');
40 $adapter->createTable($table);
41 
42 $installer->endSetup();

 

    3. 此时修改config.xml中版本号<version>,改为0.0.2后刷新模块对应的前端页面,此时,upgrade脚本自动执行,创建表databasetest_subscription。

 

    4. 创建对应的Model实体,与刚创建好的表进行交互;

  • /Model/Subscription.php;
  • /Model/Resource/Subscription.php;
  • /Model/Resource/Subscription/Collection.php;

 5. 创建subscriptionAction方法测试,/controllers/IndexController.php

 1     public function subscriptionAction() {
 2         $subscription = Mage::getModel('databasetest/subscription');
 3         
 4         $subscription->setFirstname('pisTol');
 5         $subscription->setLastname('hza');
 6         $subscription->setEmail('hza@ym.ru');
 7         $subscription->setMessage('damn');
 8         
 9         $subscription->save();
10         
11         echo "success";
12     }

 

 

 

  • load($entityId);
  • save();
  • delete();
posted @ 2016-03-15 20:31  爱偷懒的程序员pisTol  阅读(290)  评论(0编辑  收藏  举报