我遇到了无法解决的问题。部分是因为我无法用正确的术语来解释它。我很陌生,对这个笨拙的问题感到抱歉。
您可以在下面看到我的目标概述。
我正在使用Magento CE 1.7.0.2。
我创建了一个模块,一切正常,但我遇到了getCollection()的问题。
$attrid = 64;
$collection = Mage::getModel('module/xyz')->getCollection()->addFieldToFilter('c_id',$attrid);
如果我在表格中只有一条记录where c_id = $attrid
但实际上where c_id = $attrid
我当时会有多条记录,会发出以下错误
a:5:{i:0;s:74:"Item (Namespace_Module_Model_Xyz) with the same id "64" already exist";i:1;s:6099:"#0 /var/www/com2/lib/Varien/Data/Collection/Db.php(576): Varien_Data_Collection->addItem(Object(Namespace_Module_Model_Xyz))
我也试过这个
$collection->addFieldToFilter(array(
->addFieldToFilter('c_id', array('eq'=>$attrid)
));
表1 (c_id是主键)
c_id title value
----- ----- -----
64 my 1
表2 (autoc_id是主键)
autoc_id c1 c2 c3 c4 c-id
-------- ---- ---- ---- ---- ----
1 a1 b1 c1 d1 64
2 a2 b2 c2 d2 64
3 a3 b3 c3 d3 64
4 a4 b4 c4 d4 64
config.xml中
<?xml version="1.0"?>
<config>
<modules>
<Namespace_Module>
<version>0.1.0</version>
</Namespace_Module>
</modules>
<frontend>
<routers>
<module>
<use>standard</use>
<args>
<module>Namespace_Module</module>
<frontName>module</frontName>
</args>
</module>
</routers>
<layout>
<updates>
<module>
<file>module.xml</file>
</module>
</updates>
</layout>
</frontend>
<admin>
<routers>
<module>
<use>admin</use>
<args>
<module>Namespace_Module</module>
<frontName>module</frontName>
</args>
</module>
</routers>
</admin>
<adminhtml>
<menu>
<module module="module">
<title>Title</title>
<sort_order>71</sort_order>
<children>
<items module="module">
<title>title2</title>
<sort_order>0</sort_order>
<action>module/adminhtml_module</action>
</items>
</children>
</module>
</menu>
<acl>
<resources>
<all>
<title>Allow Everything</title>
</all>
<admin>
<children>
<Namespace_Module>
<title>Title Module</title>
<sort_order>10</sort_order>
</Namespace_Module>
</children>
</admin>
</resources>
</acl>
<layout>
<updates>
<module>
<file>module.xml</file>
</module>
</updates>
</layout>
</adminhtml>
<global>
<models>
<module>
<class>Namespace_Module_Model</class>
<resourceModel>module_mysql4</resourceModel>
</module>
<module_mysql4>
<class>Namespace_Module_Model_Mysql4</class>
<entities>
<module>
<table>table1</table>
</module>
</entities>
<entities>
<flatrates>
<table>table2</table>
</flatrates>
</entities>
</module_mysql4>
</models>
<resources>
<module_setup>
<setup>
<module>Namespace_Module</module>
</setup>
<connection>
<use>core_setup</use>
</connection>
</module_setup>
<module_write>
<connection>
<use>core_write</use>
</connection>
</module_write>
<module_read>
<connection>
<use>core_read</use>
</connection>
</module_read>
</resources>
<blocks>
<module>
<class>Namespace_Module_Block</class>
</module>
</blocks>
<helpers>
<module>
<class>Namespace_Module_Helper</class>
</module>
</helpers>
</global>
</config>
但是没有任何用处仍然有同样的问题
我在这里做错了什么
有什么想法吗?
答案 0 :(得分:0)
您是否尝试检查您桌面上的记录是否具有相同的ID? 我试着查看核心库上的特定代码,发现集合中的项目必须具有唯一的ID,否则会引发异常。
<?php
public function addItem(Varien_Object $item)
{
$itemId = $this->_getItemId($item);
if (!is_null($itemId)) {
if (isset($this->_items[$itemId])) {
throw new Exception('Item ('.get_class($item).') with the same id "'.$item->getId().'" already exist');
}
$this->_items[$itemId] = $item;
} else {
$this->_addItem($item);
}
return $this;
}
答案 1 :(得分:0)
它似乎与您的主键有关,请仔细检查模型中的_init()
设置,因为它使用了错误的主键列。
class MagePal_Module_Model_Mysql4_Xyx extends Mage_Core_Model_Mysql4_Abstract
{
public function _construct()
{
$this->_init('module/xyz', 'autoc_id');