伙计们,我有一个简单但无聊的问题......我有以下情况:
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'
));
如果你调试,你肯定会在每个命运子数组中找到"城市"索引。
希望这有帮助。
和平! xD