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

Man*_*anu 4 arrays cakephp find

我正在创建一个存储在蛋糕Session变量中的候选名单

$this->Session->read('Item.shorlist');
Run Code Online (Sandbox Code Playgroud)

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

$shortlist =  $this->Session->read('Item.shorlist');
Run Code Online (Sandbox Code Playgroud)

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

$shortlist = $this->Item->find('all', array('conditions' => array('Item.id' => array($shortlist))));
Run Code Online (Sandbox Code Playgroud)

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

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

我得到了所有5条记录.

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

Vin*_*ins 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)));