伙计我有一个简单但无聊的问题...... 我有以下情况:
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'
));
}
我的关系有问题吗? 提前谢谢。
答案 0 :(得分:0)
有两种方法:
将模型递归值更改为2。
$this->Solicitation->recursive = 2;
使用此功能的缺点是当您涉及很多关联时,它会检索大量不需要的不必要数据。
您可以使用" Containable"行为在这里。
$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