我试图理解Magento数据库访问的语法。有人能帮助解释一下在这个XML配置文件中使用的片段吗?
<models>
<modulex>
<class>MynameSpace_Modulex_Model</class>
<resourceModel>modulex_mysql4</resourceModel>
</modulex>
<modulex_mysql4>
<class>MynameSpace_Modulex_Model_Mysql4</class>
<entities>
<blogpost>
<table>my_blog_posts</table>
</blogpost>
</entities>
</modulex_mysql4>
</models> 发布于 2013-02-18 05:37:42
模型和资源模型有很大的区别
解释你的例子
Modulex -型号名称MynameSpace_Modulex_Model -是的,您的模块模型目录的路径。它只在触发查询时实例化,例如: Mage::getModel('modulex/modulex')->load(1);但是如果您只使用Mage::getModel('modulex/modulex');它不会实例化,因为Magento相信延迟加载。Entities -表示将用于此模块的表。它还用于获取模块特定实体的表名。(见下文示例)blogpost -不,这不是你的模特名字。您的模型名为Modulex。blogpost引用表my_blog_posts的实体表名(参见下面的示例) my_blog_posts -是的,它是数据库表的名称mysql4 --从社区版本1.6开始,mysql4就不再受欢迎了,取而代之的是资源。资源用于直接交互数据库。模型和实体表名称的示例使用:
$table = Mage::getSingleton('core/resource')->getTableName('modulex/blogpost');
在这里,modulex =您的模型,blogpost =您的实体表名。两者都用于获取数据库表名。
发布于 2013-02-19 03:03:09
“从社区版本1.6开始,mysql4就不再受欢迎,取而代之的是资源。资源用于直接交互数据库。”
如果我理解这个变化,那么config.xml将来应该会更像这样.
...
<global>
<models>
<modulex>
<class>Msc_Modulex_Model</class>
<resourceModel>modulex_resource</resourceModel>
</modulex>
<!-- <modulex_mysql4> -->
<!-- <class>MynameSpace_Modulex_Model_Mysql4</class> -->
<!-- <entities> -->
<!-- <blogpost> -->
<!-- <table>my_blog_posts</table> -->
<!-- </blogpost> -->
<!-- </entities> -->
<!-- </modulex_mysql4> -->
<modulex_resource>
<class>MynameSpace_Modulex_Model_Resource</class>
<deprecatedNode>modulex_mysql4</deprecatedNode>
<entities>
<blogpost>
<table>my_blog_posts</table>
</blogpost>
</entities>
</modulex_resource>
</models>
</global>
...Blogpost.php中的相应变化
<?php
// in \app\code\local\Msc\Module5\Model\Mysql4\Blogpost.php
//class Msc_Modulex_Model_Mysql4_Blogpost extends Mage_Core_Model_Mysql4_Abstract{
class Msc_Modulex_Model_Resource_Db_Blogpost extends Mage_Core_Model_Resource_Db_Abstract{
protected function _construct()
{
$this->_init('modulex/blogpost', 'my_blogpost_id');
}
}https://stackoverflow.com/questions/14928897
复制相似问题