2011-01-03 3 views
0

Dans mon projet, j'ai une option de recherche d'implémentation. Où l'utilisateur devrait avoir la possibilité de rechercher en fonction de quatre champs à savoir "Zip, Street, City et State". Mais aucun de ces champs n'est obligatoire.Option de recherche Cakephp avec plusieurs champs

Je suis confus avec quelles conditions dois-je placer dans find(). Alors s'il vous plaît aidez-moi.

Répondre

2

Je suppose que vous rencontrez des problèmes car les champs de formulaire sont facultatifs et vous ne savez pas comment créer le conditions pour votre recherche. Voici un moyen simple:

$conditions = array(); 
if (!empty($this->data['User']['zip'])) { 
    $conditions[] = array('User.zip' => $this->data['User']['zip']); 
} 
if (!empty($this->data['User']['street'])) { 
    $conditions[] = array("User.street LIKE '%{$this->data['User']['street']}%'"); 
} 
... etc 

Enfin, vous pouvez ajouter les conditions soit strictement:

$this->User->find('all', array('conditions' => $conditions)); 

Ou, vaguement:

$this->User->find('all', array('conditions' => array('or' => $conditions))); 

La deuxième forme place le OU opérande entre vos conditions WHERE afin qu'il renvoie une correspondance particulière. Commencez ici et augmentez la complexité de la recherche lentement.

1

Vous devrez être plus précis sur ce qu'est le problème. S'il est juste de mettre les conditions, essayez fondamentalement quelque chose comme ceci:

<?php 
$results = $this->Model->find('all', array(
    'conditions' => array(
    'Model.field' => '%'.$this->data['Model']['some_search_field'].'%', 
    'Model.field2' => '%'.$this->data['Model']['some_search_field2'].'%') 
)); 
?> 
0

C'est la bonne façon de gérer une recherche dans CakePHP, ou toute application web pour cette question: http://bakery.cakephp.org/articles/calin/2008/09/18/search-feature-to-cakephp-blog-example.

Il s'agit de créer un index de recherche, ce qui signifie essentiellement qu'il regroupe tous les champs de chaque enregistrement d'une table en une seule chaîne, ce qui facilite grandement la recherche. Suivez le tutoriel ci-dessus pour optimiser la recherche sur votre site.

Questions connexes