如何在yii框架中为州和城市创建和查看关系

时间:2015-09-07 11:26:00

标签: php yii relation

我是[Flags] enum CheckboxActions { None = 0, CheckBox1 = 1, CheckBox2 = 2, CheckBox3 = 4, CheckBox4 = 8, DoJustCB1 = CheckboxActions.CheckBox1, DoJustCB2 = CheckboxActions.CheckBox2, DoCB1AndCB2ButNeverCB4 = CheckboxActions.CheckBox1 | CheckboxActions.CheckBox2 } 框架中的一个初学者,我无法找到如何在视图中显示关系。

我试过这种方式:

yii

我的观看代码如下:

my model (Cities.php)
    public function relations()
        {
            // NOTE: you may need to adjust the relation name and the related
            // class name for the relations automatically generated below.
            return array(
                'states' => array(self::BELONGS_TO, 'State', 'state_id')
            );
        }

但我得到了<?php $cities = Cities::model()->findAll(); foreach($cities as $city){ $state=States::model()->findByPk($city->id);?> <tr> <td><?php echo cities.state_id;?></td> </tr> <?php } ?> 。我该如何解决这个错误?

2 个答案:

答案 0 :(得分:2)

替换您的代码如下:

<?php echo $city.state_id;?></td>

我已将cities.state_id替换为$city.state_id两个错误,如下所示

  1. 您正在$cities上循环,而您的变量$city是单个对象。
  2. Typo错误echo cities.state_id,因为您假设使用$ city而且您没有为变量添加$名称。
  3. 阅读评论后编辑: 现在,如果要使用关系显示州名,可以按以下方式执行:

    <?php echo $city->states->state_name; ?>
    

    其中states是关系名称

答案 1 :(得分:1)

这将有效:

<?php
$cities = Cities::model()->findAll();
foreach($cities as $city) {
?>
<tr>
    <td><?php echo $city->states->state_name;?></td>
</tr>
<?php
}
?>

模特:

public function relations()
        {
            // NOTE: you may need to adjust the relation name and the related
            // class name for the relations automatically generated below.
            return array(
                'states' => array(self::BELONGS_TO, 'State', 'state_id')
            );
        }

在这里,

states是关系名称

BELONGS_TO是关系类型

State是它所连接的模型

state_id是外键