假设我有3个名为Content
,Category
,Zone
的模型。 Content
是Category
模型的孩子,Category
是Zone
模型的孩子。分层结构看起来像这样
Zone
---Category
------Content
现在我想从Content表中获取包含父模型的一些字段的数据。我可以从直接父级获取数据,但不能从父级父模型中选择
我试过了什么? 这是我试过的查询
$result = $this->Content->find('all', array('recursive' => 2, 'contain' => array('Category.Zone'), 'fields' => 'Content.name, Category.name, Category.Zone.name')); //problem is Category.Zone.name otherwise all is ok
此查询可以从Content
及其父Category
中选择数据,但无法从Zone
模型中获取Category
模型的数据。
N.B。我可以通过加入来做到这一点。但我希望通过协会来做到这一点。
答案 0 :(得分:0)
注意:只要您使用Containable Behavior
Docs
$result = $this->Content->find('all', array(
'contain' => array(
'Category' => array('Zone')
),
'fields' => 'Content.name, Category.name, Zone.name'
));
您已通过'contain' => array('Category.Zone')
,Model应具有其开启键,并且您可以选择设置关联来代替值。喜欢: -
'contain' => array(
'Category' => array(/*conditions*/),
'Zone' => array(/*conditions*/)
),
我假设你已经在模特中做过联想,所以不需要通过这里。