2015-04-20 30 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

相關問題