Как создать и просмотреть отношения в рамках yii для штатов и городов

Я новичок в 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 } ?>

Но я получаю error undefined index cities, Как я могу исправить эту ошибку?

3

Решение

Это будет работать:

<?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 это внешний ключ

1

Другие решения

Замените ваш код, как показано ниже:

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

Я заменил cities.state_id в $city.state_id две ошибки, как показано ниже

  1. Вы зациклены на $cities и ваша переменная $city это один объект.
  2. Опечатка echo cities.state_id как здесь вы должны использовать $ city, а также вы не добавляете $ имя для переменной.

РЕДАКТИРОВАТЬ после прочтения вашего комментария:
Теперь, если вы хотите показать название штата, используя отношение, вы можете сделать это, как показано ниже:

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

где states это имя отношения

2

По вопросам рекламы [email protected]