Ребята у меня простой, но скучный вопрос …
У меня есть следующий сценарий:
Solicitation -> HasMany -> Destiny
Destiny -> BelongsTo -> City
Моя проблема в представлении, я хочу получить название города вместо city_id, и я не могу понять.
Вот мой результат:
array (size=12)
'Solicitation' =>
array (size=32)
'id' => string '25' (length=2)
'Destiny' =>
array (size=2)
0 =>
array (size=3)
'id' => string '3' (length=1)
'solicitation_id' => string '25' (length=2)
'city_id' => string '4382' (length=4)
1 =>
array (size=3)
'id' => string '4' (length=1)
'solicitation_id' => string '25' (length=2)
'city_id' => string '4350' (length=4)
Как я могу получить название города на виде?
Вот мой контроллер:
public function mySolicitations()
{
$this->Solicitation->recursive = 1;
$person_id = $this->Auth->user('id');
$conditions = array(
'Solicitation.created_by' => $person_id
);
$this->set(array(
'data' => $this->paginate('Solicitation', $conditions, array('Solicitation.id' => 'DESC')),
'title_for_layout' => 'My Solicitations'
));
}
Есть ли проблема с моим отношением?
Заранее спасибо.
Есть два способа:
Измените рекурсивное значение вашей модели на 2.
$this->Solicitation->recursive = 2;
Недостатком использования этого является то, что когда у вас довольно много ассоциаций, он будет получать много нежелательных ненужных данных.
Вы можете использовать «Контейнерное» поведение здесь.
$this->Solicitation->Behaviors->load("Containable");
И укажите названия моделей, которые вы хотите получить:
$this->Solicitation->contain(array(
"Destiny", "Destiny.City")
);
Затем добавьте свой код:
$conditions = array(
'Solicitation.created_by' => $person_id
);
$this->set(array(
'data' => $this->paginate('Solicitation', $conditions, array('Solicitation.id' => 'DESC')),
'title_for_layout' => 'My Solicitations'
));
Если вы выполните отладку, вы обязательно найдете индекс «City» в каждом подмассиве Destiny.
Надеюсь это поможет.
Мир! XD
Других решений пока нет …