我有一个如下所示的包含声明:
$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)变量。 或者我应该在模型中添加特殊规则吗?
答案 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));
}