我正在创建一个存储在蛋糕会话变量
中的候选名单$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 Item
。id
=('1,2,3,4,5'),而如果我以逗号分隔手动输入它整数例如:WHERE Item
。id
IN(1,2,3,4)然后sql查询按照我的意愿工作。
所以我想我的问题是如何将逗号分隔的字符串转换为变量中的逗号分隔整数,以便SQL不会抛出错误?
答案 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));