第十一天
一、 数据库实例测试:数据库安装及更新脚本
当自定义模块需要使用定制化数据库表时,使用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();