CakePHP 2.1.1 foreach

时间:2012-04-26 23:20:02

标签: cakephp-2.1

在我看来,我想要一个像这样的HTML表格:

     COUNTRY         TOWN
      france         paris

这是我的疑问:

$foo=$this->country->find('all', array(
    'contain' => array(
            'Town' => array(
                'conditions' => array("Town.country_id = country.id"),
                'fields' => array('id','name')
            )
        )
    )
);

我希望像这样显示我的观点:

 line6        <?php foreach ($diponibilite as $f): ?>
 line7  
 line8            <tr>
 line9                <td><?php echo $f['country']['name'];?></td>
 line10             <td><?php echo $f['town']['name'];?></td>
 line11         
 line12            </tr>
 line13        <?php endforeach; ?>

模特'country'和'town'相关联:

country hasmany town and town belongsto country

不幸的是,错误:

  

注意(8):未定义索引:名称[APP \ View \ index \ index.ctp,第10行]

为什么?

1 个答案:

答案 0 :(得分:2)

问题在于,由于您之间存在Country hasmany Town关系,因此一个国家/地区可能会有多个城镇(debug( $f )的输出显示)。

要打印所有城镇,您需要另一个循环:

<?php foreach( $diponibilite as $f ): ?>
    <tr>
        <td><?php echo $f[ 'country' ][ 'name' ]; ?></td>
        <td><?php 
            foreach( $f[ 'town' ] as $town ) {
                echo $town[ 'name' ].' ';
            }
        ?></td>
    </tr>
<?php endforeach; ?>

或者,如果您只想要第一个,请使用$f[ 'town' ][ 0 ][ 'name' ]

附注:如果您已正确设置关联,则不需要查找条件。你可以做到

$foo = $this->country->find( 'all', array(
    'contain' => array(
            'Town.id',
            'Town.name'
        )
    )
);