【问题标题】:CakePHP Find Related DataCakePHP 查找相关数据
【发布时间】:2012-08-25 04:28:29
【问题描述】:

我的 Gallery 模型与我的图像模型相关,但是当我从 gallery_controller 检索图像时,我看不到任何结果,而是看到此错误:

警告 (2):为 foreach() 提供的参数无效 [APP\views\galleries\view.ctp,第 35 行]

这是我的控制器操作中的代码:

    function view($id = null) {
            if (!$id) {
                $this->Session->setFlash(__('Invalid gallery', true));
                $this->redirect(array('action' => 'index'));
            }
            $this->set('gallery', $this->Gallery->read(null,$id));
 $this->Gallery->Image->find('all',array('conditions' => array('Image.gallery_id'=> $id)));
             $this->set('images', $images);

        }

这是我的画廊/视图中用于遍历数组的循环。

<?php

        $i = 0;
        foreach ($images['Image'] as $image):
            $class = null;
            if ($i++ % 2 == 0) {
                $class = ' class="altrow"';
            }
        ?>
        <tr<?php echo $class;?>>
            <td><?php $image['id'] ;?></td>
            <td><?php echo $image['name'];?></td>
            <!--<td><?php echo $image['img_file'];?></td>-->

            <td><?php  echo $html->image('uploads' . DS . 'images' . DS . $image['img_file'], array('alt' => 'Gallery Image')); ?></td>

        </tr>
    <?php endforeach; ?>

【问题讨论】:

    标签: cakephp cakephp-2.0 cakephp-model


    【解决方案1】:

    你没有用你的套装设置任何东西。您的查找正在执行,然后未存储在变量中。此外,您的视图循环正在错误地迭代。

    将您的控制器更改为:

      function view($id = null) {
                if (!$id) {
                    $this->Session->setFlash(__('Invalid gallery', true));
                    $this->redirect(array('action' => 'index'));
                }
                $this->set('gallery', $this->Gallery->read(null,$id));
     $images = $this->Gallery->Image->find('all',array('conditions' => array('Image.gallery_id'=> $id)));
                 $this->set('images', $images);
            }
    

    您的查看代码:

    <?php
    
            $i = 0;
            foreach ($images as $image):
                $class = null;
                if ($i++ % 2 == 0) {
                    $class = ' class="altrow"';
                }
            ?>
            <tr<?php echo $class;?>>
                <td><?php $image['Image']['id'] ;?></td>
                <td><?php echo $image['Image']['name'];?></td>
                <!--<td><?php echo $image['Image']['img_file'];?></td>-->
    
                <td><?php  echo $html->image('uploads' . DS . 'images' . DS . $image['Image']['img_file'], array('alt' => 'Gallery Image')); ?></td>
    
            </tr>
        <?php endforeach; ?>
    

    话虽如此,由于您要做的就是在查看图库时提取相关图像,因此您应该考虑设置模型关联,然后在您的图库中查找包含您想要的图像所以:

    $this->set('gallery',$this->Gallery->find('first', array('conditions' => array('Gallery.id' => $id), 'recursive' => 1));
    

    如果上述方法不起作用,则说明您的模型中存在配置错误。请发布您的型号代码,以便我们进一步调查。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-05
      相关资源
      最近更新 更多