2011-08-17 10 views
0
public function executeSearch(sfWebRequest $request) 
    {  
    $q = Doctrine_Core::getTable('News') 
       ->createQuery('a') 
       ->where("a.title LIKE ?", array($request->getParameter('text'))) 

    if ($request->getParameter('sub')){ 
       ->andWhere('a.subtile = 2'); 
    } 
    $test = $q->execute(); 
    } 

Pourquoi cela ne fonctionne-t-il pas? J'ai une erreur d'analyse. Comment cela devrait-il être fait dans Symfony 1.4?Système de recherche avec Doctrine dans Symfony

+0

Si vous utilisez MySQL, s'il vous plaît prendre soin avec -> où ("a.title COMME %?% ") il n'utilisera pas un index possible sur la colonne de titre! MySQL ne supporte que les jokers droitiers (titre LIKE?%). – domi27

Répondre

2
public function executeSearch(sfWebRequest $request) 
{  
    $q = Doctrine_Core::getTable('News') 
      ->createQuery('a') 
      ->where("a.title LIKE ?", array($request->getParameter('text'))); 

    if ($request->getParameter('sub')){ 
      $test->andWhere('a.subtile = 2'); 
    } 
    $test = $q->execute(); 
} 

serait la syntaxe correcte

peut-être vous voulez aussi ajouter %% à votre requête comme ->where("a.title LIKE %?%"