2011-08-21 62 views
0

我希望能够在控制器像下面定义分页变量时,把“或”条件的foreach循环中:CakePHP的分页有或条件

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

        ),Recipe 
       'limit' => 10 
      ); 

} 

我上面知道是错的,但我已经编译用于演示目的的代码。我们可以在蛋糕中做到这一点吗?

我需要循环,因为我希望能够使用来自另一个表(它已被find方法作为数组取而代之)的ids并将其用于当前表中的Petitions表中循环。 $ commune_ids ['Commune'] ['id']是我需要循环作为或值。或者查询会像:

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

但我当然能做到这一点的查找功能,但我想这个分页结果...

+0

对不起,这没有任何意义。为什么循环在第一位? – deceze

+0

我需要循环,因为我希望能够使用来自另一个表(通过find方法作为数组提取)的ids,并将其用于当前表中的Petits表循环。 $ commune_ids ['Commune'] ['id']是我需要循环作为或值。或者,查询将如下所示:SELECT * FROM'petitions' WHERE'commune_id' = 971或'commune_id' = 123或'commune_id' = 321或'commune_id' = 432 但我当然可以在find函数中执行此操作,但是我想要分析这个结果... –

+0

如果你有很多代码或解释要做,请_please_不要把它塞进评论中; **编辑**问题,以便我们都能从格式良好的格式中受益。 – Bojangles

回答

1

你想要的是查询:

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

蛋糕,这就是:

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

所以你让一组ID,你可以放入CON dition。完成。

$communeIds = /* assemble array somehow */; 

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

优秀!!!谢了哥们! –

+0

难道我们不喜欢蛋糕让我们的生活更轻松吗? –