2016-08-03 19 views
0

Ich versuche, eine Seite entweder basierend auf einer Kategorie ID oder Unterkategorie Name abzufragen.CakePHP Abfrage finden mit% wie% mit Leerzeichen

Die Variable $ cat wird entweder eine Ganzzahl oder Varchar aus meiner Datenbank haben.

Ich habe mit CakePHP 1.3 mit einem SQL alle Artikel mit einer Kategorie von $ cat finden oder Unterkategorie LIKE $ cat

Es funktioniert großartig, aber ein Problem entsteht, wenn $ cat ein Leerzeichen zwischen Wörtern hat, "Google Formulare".

Ich habe diese Seite durchgesehen und eine Reihe von Methoden ohne Glück versucht. Schätze jeden Rat.

Hier ist mein Controller-Routinen:

$cat = Sanitize::escape($cat); 
$cat = trim($cat); 
$title_a = str_replace($cat, "%".$cat."%", $cat); 
$a_t = str_replace('"', $title_a, $title_a); 
//var_dump($cat); 

if(!empty($cat)) 
{ 
$sqlConditions = array('OR'=>array('Article.categories LIKE' => $a_t, 'Article.event_category_id' => $cat)); 
$sqlParams = array('conditions'=>$sqlConditions); 
$catdata=$this->Article->find('all',$sqlParams); 
return $catdata; 
} 

ich viele verschiedene Alternativen ausprobiert habe:

  1. RLIKE statt LIKE

  2. Verschiedene Kriterien MATCH

    $ sqlConditions = Array ( 'ODER' => array ( 'MATCH (Artikel.Kategorien GEGEN (? IM BOOLEAN-MODUS) '=> $ cat, ' MATCH (Article.event_category_id) GEGRÜNDET (? IN BOOLEAN MODE) '=> $ cat ) );

  3. $ sqlConditions = Array ('OR' => Array ('Article.categories LIKE' => "%". $ Kategorie "%", "Article.event_category_id '=> $ cat));

Antwort

0

Ich denke, eine anständige Lösung alle Räume wäre zu entfernen und die Zeichen von $cat Kleinschreibung zu machen.

$likeCat = strtolower(str_replace(' ', '', trim($cat))); 
$sqlConditions = array(
    'OR'=> array(
     'LOWER(REPLACE(Article.categories, ' ', ''))' => $likeCat, 
     'Article.event_category_id' => $cat 
    ) 
); 
+0

Danke für diesen Vorschlag, aber leider hat es nicht für eine Kategorie mit einem Leerzeichen zwischen Wörtern funktioniert und es brach auch einzelne Wortkategorien. – sloga

Verwandte Themen