我有一个事件观察者创建日志的顺序是从管理部分放在后。 我怎样才能得到这个插入到数据库中,而不是被一个日志文件? 任何人都可以提供一个很好的教程。
Answer 1:
http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-5-magento-models-and-orm-basics/
首先你要需要/写节添加设置/读给你的config.xml。 比方说你的模块测试/演示那么你的设置部分可能看起来有点像这样:
<models>
<demo>
<class>Test_demo_Model</class>
<resourceModel>Demo_mysql4</resourceModel>
</demo>
<demo_mysql4>
<class>Test_Demo_Model_Mysql4</class>
<entities>
<demo>
<table>test_demo</table>
</demo>
</entities>
</demo_mysql4>
</models>
<resources>
<demo_setup>
<setup>
<module>Test_demo</module>
<class>Test_Demo_Model_Resource_Mysql4_Setup</class>
</setup>
<connection>
<use>core_setup</use>
</connection>
</demo_setup>
<demo_write>
<connection>
<use>core_write</use>
</connection>
</demo_write>
<demo_read>
<connection>
<use>core_read</use>
</connection>
</demo_read>
</resources>
在这一点上,我们需要创建初始化模型的Magento加载它。 “演示/ _”可以是“演示/ whateveryouwant”只要你保持whateveryouwant整个模块相同。 “ID”是主密钥和标识符的magento使用此模型。
//Test/Demo/Model/Mysql4/Comment.php
class Test_Demo_Model_Mysql4_Comment extends Mage_Core_Model_Mysql4_Abstract
{
protected function _construct()
{
$this->init('demo/________', 'id');
{
}
从这里,你将需要创建数据库的安装脚本。 这可以通过简单地创建文件测试/演示/ SQL / demo_setup / mysql4安装-0.1.0.php其中0.1.0是在你的配置文件中使用的版本号来完成。 它会是这个样子:
$installer = $this;
$installer->startSetup()
$installer->run("
#your create table goes here
");
$installer->endSetup();
这将完成在创建表时,可以使用
CREATE TABLE {$installer ->getTable('demo/_____') as defined in your configuration file to create the table name used in the file. This will also create an entry in the table core_resource that will specify the name and version number. In order to make a modification to the table you'll need to delete the original table as well as it's entry in core_resource. At this point you'll want to create a model to manage the data. Here's an example of that for a table that looks like:
//comment -String
//poster -String
//Id -int autoincrement
public function addComment($comment, $poster)
{
$comment = Mage::getModel('Demo/______');
$comment->setComment($comment);
$comment->setPoster($poster);
$comment->save();
}
对于列名,如poster_id您将使用setPosterId。 使用骆驼情况下,每个captial字母表示前手下划线。
Poster_Id - >海报海报 - >海报
为了从数据库中获取的值:
//using the same database example as above
public function getAllByPoster($poster)
{
$collection = Mage::getModel('Demo/________')->getCollection();
$collection->addFilter('poster', $poster);
return collection;
}
这将通过特定的海报返回所有的帖子。 还有一个问题,但,得到的集合没有被该类定义。 我们还有最后一个文件创建之前,我们可以看到如何显示从getAllByPoster这些结果。
//Test/Demo/Model/Mysql4/Comment/Collection.php
class Test_Demo_Model_Mysql4_Comment_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
{
protected function _construct()
{
$this->_init('comments/comment');
}
}
在这一点上,我们有我们需要阅读和使用Magento的类写入数据库的一切。 要打印一个集合,我们干脆:
foreach (Mage::getModel('demo/_____')->getAllByPoster($id) as $something)
并显示我们想从这些个别属性。
文章来源: Event/Observer input into database