Cakephp:在控制器中使用 "like" 在可能值数组中查找
Cakephp: find in a controller using "like" inside an array of possible values
此 post 的主要思想是我需要通过 "like" 在数组内组合搜索而不进行提取。
在以下代码中,我根据会话 ID 提取区域(postal 代码的一部分):
$sess_id = $this->Session->read('Auth.User');
$this->loadModel('Zone', 2);
$MyZones = $this->Zone->find('list', array('recursive' => -1, 'conditions' => array('Zone.user_id' => $sess_id['id']), 'fields' => array('Zone.zone')));
$this->set('MyZones', $MyZones);
print_r($MyZones);
//output : $MyZone = Array ( [1] => AB [2] => AL [3] => B1 )
现在我有了数组,我想寻找住在这个区域的人(例如他的 postalcode 可以是 AB526PQ,所以他住在管理员区域)
$this->loadModel('Person', 2);
$num_persons = $this->Person->find('count', array('recursive' => -1, 'conditions' => array('Person.pc LIKE' => '%' . $MyZones)));
$this->set('num_persons', $num_persons);
我收到以下错误:
Notice (8): Array to string conversion [APP\Controller\ZonesController.php]
这是生成的 sql 查询:
SELECT COUNT(*) AS `count` FROM `tn`.`personnes` AS `Personne` WHERE `Personne`.`pc` LIKE '%Array'
你必须打破你的条件
$conditions = array('Person.pc LIKE' => '%' . $MyZones);
至
foreach($MyZones as $MyZone) {
$conditions[] = array('Person.pc LIKE' => '%' . $MyZone);
}
此 post 的主要思想是我需要通过 "like" 在数组内组合搜索而不进行提取。
在以下代码中,我根据会话 ID 提取区域(postal 代码的一部分):
$sess_id = $this->Session->read('Auth.User');
$this->loadModel('Zone', 2);
$MyZones = $this->Zone->find('list', array('recursive' => -1, 'conditions' => array('Zone.user_id' => $sess_id['id']), 'fields' => array('Zone.zone')));
$this->set('MyZones', $MyZones);
print_r($MyZones);
//output : $MyZone = Array ( [1] => AB [2] => AL [3] => B1 )
现在我有了数组,我想寻找住在这个区域的人(例如他的 postalcode 可以是 AB526PQ,所以他住在管理员区域)
$this->loadModel('Person', 2);
$num_persons = $this->Person->find('count', array('recursive' => -1, 'conditions' => array('Person.pc LIKE' => '%' . $MyZones)));
$this->set('num_persons', $num_persons);
我收到以下错误:
Notice (8): Array to string conversion [APP\Controller\ZonesController.php]
这是生成的 sql 查询:
SELECT COUNT(*) AS `count` FROM `tn`.`personnes` AS `Personne` WHERE `Personne`.`pc` LIKE '%Array'
你必须打破你的条件
$conditions = array('Person.pc LIKE' => '%' . $MyZones);
至
foreach($MyZones as $MyZone) {
$conditions[] = array('Person.pc LIKE' => '%' . $MyZone);
}