2019-06-12

Magento Model之MySQL4类型资源

模块的config.xml

[code lang="xml"]<global> <models>
<etam_blog>
<version>0.1.0</version>
<!-- 此处定义Model类名前缀,在调用Mage::getModel(etam_blog/xxx)时,会组成Etam_Blog_Model_Xxx的类名 -->
<class>Etam_Blog_Model</class>
<!-- Model的资源类型,后面开新标签需定义资源配置详情 -->
<resourceModel>etam_blog_mysql4</resourceModel>
</etam_blog>
<!-- Model资源定义,实际与数据库进行交互行为的类 -->
<etam_blog_mysql4>
<!-- 资源Model类名前缀,在调用getResourceMode(etam_blog/xxx)l时,将组成类名Etam_Blog_Model_Mysql4_Xxx -->
<class>Etam_Blog_Model_Mysql4</class>
<!-- 资源Model实例,实际的数据表名,用于初始化资源Model,如果定义错误,Magento会报Null Connection。示例:在资源Model中调用_init("etam_blog/xxx")时,会尝试寻找此处有无标签为<xxx>的定义,并找到<table>中定义的表与之交互 -->
<entities>
<entity><table>etam_blog_entity</table></entity>
</entities>
</etam_blog_mysql4>
</models>
</global>
[/code]

Model类定义

[code lang="php"]class Etam_Blog_Model_Blog extends Mage_Core_Model_Abstract 
protected function _construct()

// 初始化资源类,取得类名Etam_Blog_Model_Mysql4_Blog
$this->_init("etam_blog/blog");

[/code]

资源Model类定义

[code lang="php"]class Etam_Blog_Model_Mysql4_Blog extends Mage_Core_Model_Mysql4_Abstract

protected function _construct()

//取得entity配置,对应到数据表etam_blog_entity
$this->_init("etam_blog/entity", "post_id");


[/code]

Collection集合类定义

[code lang="php"]class Etam_Blog_Model_Mysql4_Blog_Collection extends Mage_Core_Model_Resource_Db_Collection_Abstract 
protected function _construct()

// 此处初始化Model类
$this->_init("etam_blog/blog");

[/code]

controller中使用Model

[code lang="php"]public function testModelAction() 
// 取得URL参数
$params=$this->getRequest()->getParams();
// 从config.xml中查找<etam_blog>,根据配置组合为类名Etam_Blog_Model_Blog
$blog=Mage::getModel("etam_blog/blog");
// 根据参数载入资源,其中自动调用了getResourceModel,根据配置,此处会实例化一个Etam_Blog_Model_Mysql4_Blog对象,成功载入后,可对
$post=$blog->load($params['id']);
echo $post->getTitle();
// Collection的使用,取得所有记录所组成的Etam_Blog_Model_Blog对象数组
$posts=Mage::getModel("etam_blog/blog")->getCollection();
foreach($posts as $p)
echo $p->getContents();


[/code]

 

没有评论:

发表评论