2011-09-02 96 views
0

我是CakePHP的新手,我遇到了所有模型無法正確連接的問題。CakePHP模型關係無需遞歸

這是我的模型在CakePHP佈局:

類屬於關聯位置
類屬於關聯類類別
類的hasMany ScheduledClass
ScheduledClass屬於關聯導師

我的問題是,當我使用:

$this->Class->find('all') 

我只從Class,Location,Clas中獲取數據sType和ScheduledClass模型。我沒有從教師模型中獲取任何數據。

我可以將遞歸值設置爲'2'並從教師模型中檢索數據,但這會導致大量查詢(每行一個)而不是「ScheduledClass.instructor_id = Instructor」上的聯接。 ID」。

我希望能acheive是一樣的東西:

SELECT 
... 
... 
FROM classes as Class 
INNER JOIN locations as Location on Class.location_id = Location.id 
INNER JOIN class_types as ClassType on Class.class_type_id = ClassType.id 
INNER JOIN scheduled_classes as ScheduledClass on ScheduledClass.class_id = Class.id 
INNER JOIN instructors as Instructor on ScheduledClass.instructor_id = Instructor.id 

我同時使用中可容納審判,以得到正確的數據相結合,但我沒能得到任何工作(可能是由於我誤解他們的用途)。

預先感謝您!

回答

0

使用Containable並設置你希望find如何反應並獲取你想要的數據。

示範

var $actsAs = array('Containable'); 

,並在控制器如果你有你的模型/數據庫關係設置的權利,你可以拉你想連確切的數據,你可以做這樣的事情

$this->data = $this->User->find('first', array('conditions' => array('User.id' => $this->Auth->user('id')), 'contain' => array('City', 'Region', 'Country', 'UserOccupations', 'UserGroup'))); 

選擇你想要拉的列。