Cakephp:使用"像"在控制器中找到在一组可能的值内

时间:2015-04-20 21:22:33

标签: sql cakephp find sql-like

这篇文章的主要思想是我需要在数组中通过" like"没有取得。

在以下代码中,我根据会话ID提取区域(邮政编码的一部分):

 $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 )

现在我有我的阵列我想找到住在这个区域的人(例如他的邮政编码可以是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'

1 个答案:

答案 0 :(得分:0)

你必须打破你的条件

$conditions = array('Person.pc LIKE' => '%' . $MyZones);

foreach($MyZones as $MyZone) {
     $conditions[] = array('Person.pc LIKE' => '%' . $MyZone);
}