2014-06-10 2 views
0

나는 cakePHP에서 매우 간단한 검색 함수를 만들고 배열을 for 루프에서 동적으로 채우고 싶습니다.for 루프 cakePHP에서 배열 만들기

두 번째 매개 변수 int find() - function으로 설정할 배열을 만들려고합니다. 은 "OR =>"입니다

$search = $this->request->query['q']; 
$words = explode(" ", $search); 
$count = count($words); 

을 그리고 다음이에서를위한 루프를 만들 수 있지만 :

$result = $this->Book->find('all', array('conditions' => 
     array("Book.book_title LIKE" => "%war%"), 
     "OR" => 
     array("Book.book_title LIKE" => "%and%"), 
     "OR" => 
     array('Book.book_title LIKE' => "%peace%") 
)); 
$this->set('searchResult', $result); 

내 첫 직감 그렇게하는 것이 었습니다 :

이 내 정적 결과입니다 통합에 많은 어려움을 겪었습니다. 아무도 나를 위해 루프를 만들 수 있습니까?

미리 감사드립니다. Jesper.

답변

1

왜 인생을 복잡하게 만드나요?

$conditions = array(
    'OR' => array(
     array('Book.book_title LIKE' => '%term1%'), 
     array('Book.book_title LIKE' => '%term2%'), 
     ... 
    ) 
) 

중첩 된 배열 (PHP에서 작동하지 않습니다) 같은 배열의 키를 재사용하지 않도록하는 데 필요한 : 주요 키와 그 아래 배열의 간단한 배열로 사용하거나 한 번. 이 분해 검색 쿼리 용어에서 오는 경우

,

$terms = explode(' ', $his->request->query('q')); 
foreach ($terms as $term) { 
    $conditions['OR'][] = array('Book.book_title LIKE' => '%' . $term . '%'), 
} 
+0

예,이 정확히 내가 필요한 지혜의 종류이었다 (중복 배제) DRY 일을 계속 foreach는 사용합니다. 명확한 주셔서 감사합니다 :) –