2015-04-20 19 views
0

这篇文章的主要思想是我需要通过“like”将数组内的搜索合并到一起,而不需要执行提取操作。Cakephp:在控制器中使用可能值数组中的“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' 

回答

0

你将不得不从

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

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

我寻找替代没有的foreach(取)打破你的条件,如果可能像通过“IN”使用的那样。数组( )''NOT'=> array( array('Company.status'=> array('inactive','suspended')) )' 我们在这里处理了一组值,与我需要的值相同但没有类似的运营商。 – Shinigami

+0

@Shinigami你应该为此设计相应的数据库 – Abhishek

+0

不需要针对数据库的特殊设计(仅用于统计目的)(find(“count”))。任何方式谢谢你,给了我很多。我刚刚发现了另外一种正则表达式和正则表达式。否则,我会尝试研究并实施它们,我会使用这种替代方法。你有什么主意吗?。谢谢。 – Shinigami

相关问题