Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Magento 致命错误:对非对象调用成员函数join()?_Magento_Join_Fatal Error - Fatal编程技术网

Magento 致命错误:对非对象调用成员函数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('*'))

我正在构建幻灯片,并试图通过此函数连接我的幻灯片表和图像表。不幸的是,我遇到了以下错误:

“致命错误:对非对象调用成员函数join()”

代码如下:

$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')