2011-03-02 2 views
0

응용 프로그램에 간단한 검색을 구현하려고하지만이를 처리하는 가장 좋은 방법이 확실하지 않습니다. 내 데이터베이스에 City 필드가 포함 된 Listings 개체가 포함되어 있습니다. 사용자가 도시를 텍스트 필드에 입력하고 다음 페이지에서 해당 도시의 모든 목록을 가져 오는 검색 양식을 만들고 싶습니다. 해당 도시 필드의 쿼리 만 전체 텍스트 검색을 수행하고 싶지 않습니다.CakePHP 게시 방법으로 특정 데이터베이스 필드 검색

또한 결과 페이지에서이 쿼리를 POST에 저장하고 싶습니다.이 작업을 수행하는 가장 좋은 방법을 찾을 수 없습니다.

컨트롤러에서이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

+0

나는 당신이이 질문으로 시작 : – JohnP

답변

1

잘보기는 올바른 양식을 만들 것이

$this->Form->Create('Listing', array('action'=>'search')); 
$this->Form->input('city', array('default'=>$city)); 
$this->Form->end(); 

if (isset($listings)) { 
//code to display listings 
} 

이보기 같이 보일 것입니다. 그리고 컨트롤러가 그 값을 가져야합니다.

function search() { 
    $city = ''; 
    if (!empty($this->data)) { 
     $city = $this->data['Listing']['city']; 
     $opts = array(
      'conditions' => array('Listing.city' => $city) 
    ); 
     $listings = $this->Listing->find('all', $opts); 
     $this->set('listings', $listings); 
    } 
    $this->set('city', $city); // so the keyword is saved. Can also get it via $this->data 
} 

이 코드는 어떻게하는지에 대한 아이디어를 제공합니다.

0

보기 :

<?php echo $this->Form->create() 

echo $this->Form->input('search'); 

?> 

<input name="data[Product][word]" /> 

컨트롤러 :

<?php 

    $result = $this->Product->find('all',array(
     'conditions'=>array(
      'OR'=>array(
       array('name LIKE'=>'%'.$word.'%'), 
       array('description LIKE'=>'%'.$word.'%'))))); 


    $this->set(compact('result')); 

?> 
+0

너무 코드를 설명 건의 할 것입니다. 이것이 (묻는대로) 최선의 방법입니까? 그리고 왜? – Gendarme