2016-08-10 6 views
1

Hallo, ich bin neu in CakePHP und ich habe eine harte Zeit konvertieren mysql-Abfragen in cakephp.I mit haben diese Abfrage, die ichJoin-Abfrage in cakephp

in CakePHP Syntax konvertieren möchten
SELECT * 
FROM trip 
JOIN countries ON trip.departure_country_id = countries.id 
WHERE countries.country_name LIKE "eng%" 

Dies ist, was ich habe bisher versucht

class Trip extends AppModel 
{ 
    public $useTable = 'trip'; 
    public $primaryKey = 'trip_id'; 

    public $belongsTo = array(
     'User' => array(
      'className' => 'User', 
      'foreignKey' => 'user_id', 
      'fields' => array('User.user_id','User.first_name','User.last_name','User.profile_image','User.country','User.phone_no') 

     ), 
     'departure_country' => array(
      'className' => 'Country', 
      'foreignKey' => 'departure_country_id', 
     ), 
     'arrival_country' => array(
      'className' => 'Country', 
      'foreignKey' => 'arrival_country_id', 
     ) 
    ); 

    public function getLocationBasedTrips($country){ 
     return $this->find('all', array(
      'conditions' => array(
       'OR' => array('Country.country_name Like' => '%'.$country.'%') 
      ), 
     )); 
    } 
} 
+0

Werfen Sie einen Blick auf die [ContainableBehavior Dokumentation] (http://book.cakephp.org/2.0/en/core-libraries/behaviors/containable.html). – BadHorsie

Antwort

0

Einige Klammern von der vorherigen Antwort entfernt. Versuchen Sie folgendes:

$this->find('all', array(
      'joins' => array(
       array(
        'table' => 'countries', 
        'alias' => 'Country', 
        'conditions' => array(
         'Trip.departure_country_id = Country.id' 
        ) 
       ) 
      ), 
       'conditions' => array(
        'Country.country_name LIKE' => "%$country%" 
       ) 
      ) 
     ); 
+0

Hallo danke für Ihre Antwort. Es gibt mir keinen Fehler, aber es gibt auch keine Ergebnisse .. wie das Ergebnis wird leer ... – hellosheikh

+0

debug die sql-Abfrage mit diesem '$ db = ConnectionManager :: getDataSource ('default'); debug ($ db-> getLog()); 'und sehen, ob die SQL-Abfrage entspricht, was Sie erwarten –

+0

okay, ich bin hier verwirrt. Ich habe es debuggen und dann führt die Abfrage in phpmyadmin und es zeigt die Ergebnisse korrekt, aber warum ich null in einer Variablen bekomme ... – hellosheikh

1

Reise Modell:

$this->find('all', 
    array(
     'joins' => array(
      array(
       'table' => 'countries', 
       'alias' => 'Country', 
       'type' => 'INNER', 
       'conditions' => array(
        'Trip.departure_country_id = Country.id' 
       ) 
     ), 
      'conditions' => array(
       'Country.country_name Like' => "%$country%" 
     ) 
    ) 
); 
+0

Vielen Dank für Ihre Antwort. Dies ist der Fehler, den ich bekomme Syntaxfehler oder Zugriffsverletzung: 1064 Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version für die richtige Syntax in der Nähe von "Array WHERE 1 = 1" in Zeile 1 entspricht – hellosheikh

+0

Ich denke, es ist ein Zitat Problem, ich aktualisiere meine Antwort. – bill

+0

Wenn das nicht funktioniert, versuchen Sie "% {$ country}%" – bill