2017-07-24 2 views
0

Hallo Ich bin mehrere Tabellen in meiner Abfrage beitreten. Ich möchte die Ergebnisse basierend auf dem Suchschlüsselwort erhalten, das ich an mehreren Tabellen überprüfe.CakePHP Suche in Join-Tabelle

Hier ist mein Code

public function getGigPostBasedOnSearch($keyword){ 
     $this->Behaviors->attach('Containable'); 
     return $this->find('all', array(

      'contain' => array(
       'User','UserInfo', 'GigPostAndCategory.Category','Location','GigPostAndCalender' 

      ), 
       'conditions' => array(
        'AND' => array( 
         'GigPost.active' => 1, 
       'OR' => array(

      array('GigPost.title LIKE' => '%'.$keyword.'%'), 
      array('GigPost.description LIKE' => '%'.$keyword.'%'), 
      array('Location.location_string LIKE' => '%'.$keyword.'%'), 


     ) 
) 
       //'OrderGigPost.request' => 0 
      ), 
      'order' => 'GigPost.gig_post_id DESC', 

      'recursive' => 0 
     )); 
    } 

Die Abfrage arbeitet erfolgreich und hol mir die Ergebnisse, was ich wollte. Aber in derselben Abfrage möchte ich auch in der Kategorie Tabelle suchen. Aber wenn ich das tue

array('Category.cat_name LIKE' => '%'.$keyword.'%') 

Ich bekomme einen SQL-Fehler, der besagt, dass es Spaltenname nicht finden konnte.

Kategorie Tabelle hat zwei Spalten cat_id und cat_name

und GigPostAndCategory hat id, cat_id, gig_post_id (weil man gigpost das ist mehrere Kategorien haben kann, warum ich eine separate Tabelle für das gemacht)

Also brauche ich Hilfe, um ein Ergebnis basierend auf der Kategorie zu erhalten, wenn das gesuchte Schlagwort zu etwas in der Kategorie

passt

Antwort

0

Wenn Sie Daten enthalten, wird oft eine separate Abfrage ausgeführt, die dann zu Ihnen zurückgeleitet wird.

Aus diesem Grund können Sie keine Bedingungen gegen die enthaltenen Tabellen ausführen (abhängig von einigen Faktoren, aber gehen Sie am besten davon aus, dass Sie nicht können).

Verwenden Sie stattdessen JOINs. Dadurch wird sichergestellt, dass es in derselben Abfrage abgerufen wird, und Sie erhalten Zugriff auf die Felder für verbundene Tabellen.

(Hinweis:.. Sie in DebugKit schauen, um zu sehen, welche Abfragen ausgeführt werden Dadurch werden Sie in der Regel den Hinweis geben, was Sie brauchen, warum ist es nicht funktioniert)

+0

Danke @ Dave ... können Sie bitte schreibe diese Abfrage mit Join wenn möglich, ich bin neu und ich kenne nur diese Methode – hellosheikh