我正在爲magento定製管理模塊,並試圖在同一時間學習magento方法=)。我目前在版本CE 1.6上。如何使用Magento的集合對象
我跟着幾個教程和文章,並設法設置一個自定義數據庫表,我想我管理的集合類工作。 (我應該說我是Zend Framework/Magento的新成員,也是初學者熟練的程序員)。至少下面的代碼獲得是我正確的結果:
$department_collection = Mage::getModel('custom/systemconfig')->getCollection()
->addFilter('name','departments');
當我的var_dump這與$department_collection->getData()
我得到一個數組從我的數據庫中篩選行。
現在,當我嘗試這樣做:
foreach ($department_collection as $department) {
$department->delete();
}
我從Magento的異常:
- 警告:包括(法師\ Upperfield \型號\ Systemconfig.php)function.include ]:未能打開流:沒有這樣的文件或目錄在D:\ wamp \ www \ magento \ lib \ Varien \ Autoload.php在線93
問題是,我想我設置我的目錄結構錯誤,但只是不明白它是什麼。跟蹤沒有太大的幫助,因爲它是連接的,只顯示相關信息。
我的目錄結構是這樣的:
+app
+code
+local
+Namespace
+Module
+Model
+Mysql4
+Systemconfig
Collection.php
Systemconfig.php
Systemconfig.php
我裝我的模型有:
//file: ../Mysql4/Systemconfig.php
class Namespace_Module_Model_Mysql4_Systemconfig extends Mage_Core_Model_Mysql4_Abstract{
protected function _construct()
{
$this->_init('module/systemconfig', 'systemconfig_id');
}
}
// file: ../Mysql4/Systemconfig/Collection.php
class Namespace_Module_Model_Mysql4_Systemconfig_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract {
protected function _construct()
{
$this->_init('namespace/systemconfig');
}
}
目前我的config.xml文件看起來像這樣(節選):
<models>
<module>
<class>Namespace_Module_Model</class>
<resourceModel>module_mysql4</resourceModel>
</module>
<module_mysql4>
<class>Namespace_Module_Model_Mysql4</class>
<entities>
<systemconfig>
<table>module_systemconfig</table>
</systemconfig>
</entities>
</module_mysql4>
我的猜測是: 我設置錯誤結構的集合類,或 我誤解如何使用集合對象。
有沒有人可以向我解釋這裏發生了什麼? Gratefull任何幫助。
問候 阿迪
對不起,通過崗位後的問題閱讀時我才意識到我設置了命名空間,而不是在收集模型模塊別名初始化。問題解決了。我只是喜歡你花了整整一夜看着相同的代碼,並沒有意識到這樣的明顯錯誤。 – 2012-03-28 11:33:01
你有沒有發現本教程:http://alanstorm.com/magento_models_orm – Max 2012-03-28 12:17:58
是的,非常感謝。我一直在檢查magentocommerce.com上的Alan Storms文章。這就是我到現在爲止的女僕。正如我在評論中所說的那樣,這是一種「錯字」錯誤,我試圖用..._init('namespace/model')啓動Collection模型而不是..._init('module/model') ,在帖子後意識到這一點,但我無法在8小時內回答自己的問題。感謝Alan的評論和讚譽。 – 2012-03-28 12:50:24