Cakephp在查找操作中使用数组变量

时间:2011-08-22 23:39:19

标签: arrays cakephp find

我正在创建一个存储在蛋糕会话变量

中的候选名单
$this->Session->read('Item.shorlist');

这包含逗号分隔ID的列表,例如。 1,2,3,4,5

$shortlist =  $this->Session->read('Item.shorlist');

我想在查找条件中使用此变量中的逗号分隔ID执行查找操作,例如:

$shortlist = $this->Item->find('all', array('conditions' => array('Item.id' => array($shortlist))));

但是,这只返回1组数据。 如果我手动输入数组,例如:

$shortlist = $this->Item->find('all', array('conditions' => array('Item.id' => array(1,2,3,4,5))));

我得到了所有5条记录。

如果不在每个ID上执行多次查找,如何解决此问题?如果我查看SQL转储,我可以使用$ shortlist变量看到WHERE Itemid =('1,2,3,4,5'),而如果我以逗号分隔手动输入它整数例如:WHERE Itemid IN(1,2,3,4)然后sql查询按照我的意愿工作。 所以我想我的问题是如何将逗号分隔的字符串转换为变量中的逗号分隔整数,以便SQL不会抛出错误?

2 个答案:

答案 0 :(得分:5)

当您使用此行检索会话值时,$shortlist = $this->Session->read('Item.shorlist');将是一个字符串,请确保它是一个数组。

使用explode $short_list_array = explode(',', $shortlist);函数将其转换为数组并使用

$shortlist = $this->Item->find('all', array('conditions' => array('Item.id' => $short_list_array)));

答案 1 :(得分:2)

$shortlist = array_map('trim', explode(',',$shortlist));