Cakephp分页或条件

时间:2011-08-21 13:30:08

标签: php cakephp

我希望能够在控制器中定义分页变量时将'或'条件放在foreach循环中,如下所示:

foreach($p as $ps){
$this->paginate = array(
                'or' => array(
                    array('Petition.commune_id LIKE' => $commune_ids['Commune']['id'] . ","),

                    ),Recipe
                'limit' => 10
            );

}

我知道上面的内容有误,但我已编译代码用于演示目的。有没有办法在蛋糕中做到这一点?

我需要循环,因为我希望能够使用另一个表中的id(通过find方法将其作为数组提取)并使用它在当前表(即Petitions表)中进行循环。 $ commune_ids ['Commune'] ['id']是我需要循环的值或值。或者,查询将如下:

SELECT * FROM petitions WHERE commune_id = 971 OR commune_id = 123 OR commune_id = 321 OR commune_id = 432 

但当然我可以在find函数中执行此操作,但我想对此结果进行分页...

1 个答案:

答案 0 :(得分:1)

您想要的是查询:

SELECT * FROM petitions WHERE commune_id IN (971, 123, ...)

在Cake中,那是:

'conditions' => array(
    'Petition.commune_id' => array(971, 123, ...)
)

因此,您可以创建一个可以放入条件的ID数组。完成。

$communeIds = /* assemble array somehow */;

$this->paginate = array(
    'conditions' => array(
        'Petition.commune_id' => $communeIds
    ),
    'limit' => 10
);