2009-03-02 30 views
-1

Mögliche Duplizieren in cakephp implementieren:
How do I query a table based with HABTM relationship while providing additional conditions in CakePHP?Wie kann ich diese

Pls helfen mir diese

in cakephp implementieren
table safari: 
id 
name 
duration 

table region: 
id 
name 

table regions_safaris: 
safari_id 
region_id 

select s.name 
from region r, safaris_regions sr, region r, safari s 
where r.name='yourRegion' 
and sr.region_id=r.id and s.id=sr.safari_id and s.duration=5; 
+0

Sie werden mehr spezifisch über sein müssen, wo Sie –

+0

auch zu kämpfen haben, haben Sie die Region Tabelle in der Abfrage doppelt so r aliased –

Antwort

1

Ich bin nicht sicher, was Sie speziell kämpfen mit, aber Sie können Ihre Abfrage klarer machen, indem Sie die Join-Bedingungen von den Auswahlkriterien trennen:

select s.name 
from safari s 
inner join regions_safaris sr on(s.id=sr.safari_id) 
inner join region r on(sr.region_id=r.id) 
where r.name='yourRegion' 
and s.duration=5; 

Ihre Anfrage hatte auch den Fehler, safaris_regions statt regions_safaris und Aliasing die Regionen Tabelle zweimal verwendet wird.

1

sollten Sie die Regionentabelle in Regionen ändern, und Safari-Tabelle in Safaries, damit es mit CakePHP funktioniert. Nach dem Einrichten der Beziehungen im Modell würden Sie einen Fund verwenden.

//safaries_controller.php 
$this->Safari->find('all', array('fields'=>'Safari.name', 'conditions'=>array('Region.name'=>'yourRegion'));