在CakePHP中通过contains()和条件在其他模型中使用父模型数据

时间:2011-04-21 07:14:16

标签: cakephp cakephp-1.3

我有一个如下所示的包含声明:

    $this->Wijken->contain(array(
        'Theme' => array(
            'Polygon' => array(
                'PolygonPoint'
            )
        )
    ));

Polygon表包含(以及其他)字段'theme_id'和'wijk_id'(这是Wijken的主键)。

我想要的只是获取与wijk_id匹配的多边形。

所以在我看来,这可以通过在Polygon-array中添加以下内容来实现:

'conditions' => array('wijk_id' => $this->Wijken.id)

然而,这不起作用。当我将值硬编码为1时,它可以工作,我只得到wijk#1的多边形。

所以我的问题是;如何在另一个模型的条件变量(Polygon)中使用父模型(Wijken)变量。 或者我应该在模型中添加特殊规则吗?

1 个答案:

答案 0 :(得分:0)

在调用find()时传递包含设置。这将允许您动态传递Wijken ID。即:

function view($id) {
    // assuming $id param is a wijken id
    $contain = array(
        'Theme' => array(
            'Polygon' => array(
                'conditions' => array('Polygon.wijk_id' => $id),
                'PolygonPoint'
            )
        )
    );
    $conditions = array('Wijken.id' => $id);
    $wijken = $this->Wijken->find('first', array('contain'=>$contain, 'conditions'=>$conditions));
}