Magento 致命错误:对非对象调用成员函数join()?
我正在构建幻灯片,并试图通过此函数连接我的幻灯片表和图像表。不幸的是,我遇到了以下错误: “致命错误:对非对象调用成员函数join()” 代码如下:Magento 致命错误:对非对象调用成员函数join()?,magento,join,fatal-error,Magento,Join,Fatal Error,我正在构建幻灯片,并试图通过此函数连接我的幻灯片表和图像表。不幸的是,我遇到了以下错误: “致命错误:对非对象调用成员函数join()” 代码如下: $diaporama = Mage::getModel('diaporama/diaporama')->getCollection(); $diaporama->join(array('images' => 'diaporama/images'), 'main_table.id = images.id', array('*'))
$diaporama = Mage::getModel('diaporama/diaporama')->getCollection();
$diaporama->join(array('images' => 'diaporama/images'), 'main_table.id = images.id', array('*'))
->setOrder('position','asc');
$diaporama->load();
return $diaporama ;
有人知道我错在哪里吗
更新: 好的,现在我的第一个问题解决了,我已经成功地在我的块上显示了数据。我的查询可能仍然有问题,因为我只获得了幻灯片放映的第一个图像数据。 知道我有两张桌子: Diaporama: -身份证 -头衔 -描述朊病毒 Diaporama\u图像: -身份证 -src -alt -头衔 -描述 -位置 -尿布身份证(fk) 我想得到的结果是这样的
diaporama = array(
'id'
'title'
'description'
'images' => array (
array(
'id' => '',
'title' => '',
'description' => '',
'src' => '',
'alt' => '',
'position' => ''
),
array(
'id' => '',
'title' => '',
'description' => '',
'src' => '',
'alt' => '',
'position' => ''
)
)
)
目前我还远远没有做到这一点
更新2 我以这种方式更新了代码:
$diaporama = Mage::getModel('diaporama/diaporama')->getCollection();
$diaporama->join(array('images' => 'diaporama/images'),
'main_table.id=images.diaporama_id', array('*'))
->setOrder('position','asc')
->load();
return $diaporama;
$diaporama = Mage::getModel('diaporama/diaporama')->load($id);
$images = Mage::getResourceModel('diaporama/images_collection')
->addFieldToSelect('*')
->addFieldToFilter('diaporama_id', $id)
->setOrder('position','asc')
->load();
return array( 'diaporama' => $diaporama,
'images' => $images );
但我仍然缺少Diporama表字段。
这是我目前的结果,随机图像作为样本数据
我仍然缺少Diporama表字段数据这是在互联网上找到的随机图像的结果
array (size=3)
0 =>
array (size=7)
'id' => string '1' (length=1)
'title' => string 'Un superbe Yacht' (length=16)
'description' => string 'La description d'un superbe Yacht' (length=33)
'src' => string 'http://aboutyacht.com/wp/wp-content/uploads/2012/09/12_diaporama-980x360.jpg' (length=76)
'alt' => string 'yacht1' (length=6)
'position' => string '1' (length=1)
'diaporama_id' => string '1' (length=1)
1 =>
array (size=7)
'id' => string '2' (length=1)
'title' => string 'Yacht Interieur' (length=15)
'description' => string 'L'interieur d'un super Yacht' (length=28)
'src' => string 'http://aboutyacht.com/wp/wp-content/uploads/2012/09/1_diaporama-980x360.jpg' (length=75)
'alt' => string 'interieur yacht' (length=15)
'position' => string '2' (length=1)
'diaporama_id' => string '1' (length=1)`
最终编辑:问题解决了 上一次更新不起作用,它只是获取了我的表的所有图像,所以我最终忘记了join()方法,我这样解决了它:
$diaporama = Mage::getModel('diaporama/diaporama')->getCollection();
$diaporama->join(array('images' => 'diaporama/images'),
'main_table.id=images.diaporama_id', array('*'))
->setOrder('position','asc')
->load();
return $diaporama;
$diaporama = Mage::getModel('diaporama/diaporama')->load($id);
$images = Mage::getResourceModel('diaporama/images_collection')
->addFieldToSelect('*')
->addFieldToFilter('diaporama_id', $id)
->setOrder('position','asc')
->load();
return array( 'diaporama' => $diaporama,
'images' => $images );
我的幻灯片和图像按显示位置排序。您的集合返回空值。你为什么不在加入之前先把var_转储($diaporama)。还要检查system.log和您的apache日志,以向我们提供更多信息。可能找不到您尝试实例化的模型的路径 更新:
你们将主表id加入到iamges表id中。你们看到的结果纯属运气。你没有加入你的forigen键'main_table.id=images.diaporama_id'应该是吗?你是对的,我错了。我在我的config.xml文件中发现了问题。谢谢你的建议,你是对的,我用这种方式更新了它,现在我有了所有的图像,但仍然缺少Diporama Fields。没有问题,请给出我的第一个问题的答案:DDone,如果你能就我的上一个问题给出最后一个建议,那就太酷了:)哦,我认为它奏效了。你收到的结果是什么?如果查询结果为false。请尝试查询,但编辑为数组('images.*')。我只是想看看问题是否是sql错误,因为您有重复的列名('id')