从cakephp中的两级父模型中选择字段

时间:2015-06-07 06:30:17

标签: php mysql cakephp

假设我有3个名为ContentCategoryZone的模型。 ContentCategory模型的孩子,CategoryZone模型的孩子。分层结构看起来像这样

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。我可以通过加入来做到这一点。但我希望通过协会来做到这一点。

1 个答案:

答案 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*/)
), 

我假设你已经在模特中做过联想,所以不需要通过这里。