2014-08-30 56 views
0

我只需要從4個相關聯的表中找到所有細節。我查看了文檔,我可以從2個表中獲取數據,但不能獲取其他表中的數據。 我有一個課程表,我只有相關的導師id行才能顯示。這工作正常。我有一個與FK課程id上的課程表相關的課程 - 學生表。從這個課程學生表中,我可以看到一個與另一個表相關的字段。找到所有複雜的模型

教訓表(FK tutor_id但沒有student_id數據) 導師表(鏈接到與tutor_id教訓表) lessons_students表(與lessonID連接,並具有studentID HABTM) 學生表(從第一課 - 學生表studentID鏈接)

因此,如果我從課表中獲得一行,我希望教師名稱(來自導師表,我現在可以做到這一點),學生名稱通過studentID。這是4張表格,這很令人頭疼,因爲這些文檔只是簡單的例子。我不能讓學生姓名或學生證顯示

http://book.cakephp.org/2.0/en/models/retrieving-your-data.html

我嘗試這樣做,我猜,因爲我有一個HABTM和屬於關聯relationship.There在某處被記錄爲我在谷歌搜索答案用了幾個小時。 ('''','this',''''''),包含' => array('Student'=> array('conditions'=> array('Student.id'=>'Lesson.id'))))));

class LessonsController extends AppController { 
    $this->set('tutor',$this->Lesson->find('all', array(
      'conditions'=>array('Lesson.Tutor_id'=> 1,'Lesson.id'=>'Lesson_Students.lesson_id')))); 



view 
//////// 

    <?php 
     foreach ($tutor as $item): 

     echo '<tr><td>'. $item['Lesson']['id'].'</td>'; 
     // echo '<td>'. $item['Tutor']['id']['username'].'</td>'; 
     echo '<td>'. $item['Lesson']['tutor_id'].'</td>'; 
     echo '<td>'. $item['Tutor']['last_name'].'</td>'; 
      echo '<td>'. $item['Lesson_Student']['student_id'].'</td>'; 
     echo '</tr>'; 
    endforeach; 
    unset($item); 
+0

當我做一個調試找到所有我做的學生行,但我似乎無法打印出來的價值。回聲'​​'。 $ item ['Lesson'] ['Student'] ['id']給出了一個未定義的學生姓名和名字,但不包括[lesson]的名字 – ajt 2014-08-30 08:16:16

+0

學生表與教訓有一個HABTM關係,所以我怎樣才能獲得數據與其他模型。我看到數組中的數據調試 – ajt 2014-08-30 08:39:37

回答

1

我通過將所有需要的解決了類似的問題,手動連接到選項數組:

'joins' => array(
    array(
     'table' => 'sales', 
     'alias' => 'Sale', 
     'type' => 'LEFT', 
     'conditions' => array(
      'Sale.serialnumber_id = Serialnumber.id' 
     ) 
    ), 
    array(
     'table' => 'rentals', 
     'alias' => 'Rental', 
     'type' => 'left', 
     'conditions' => array(
      'Rental.serialnumber_id = Serialnumber.id' 
     ) 
    ), 
) 

然後你就可以使用所有這些領域的條件,陣列中,並將它們添加到您的領域陣。

要優化整個查詢,您只應檢索所需的字段 - 通過添加字段選項。一個SELECT *查詢(就像這個一樣)是查詢很慢,並且在無用的流量時創建很多,特別是當你查詢多個表時。

+0

感謝您的reply.ok,但我怎麼能做到這一點,也從同一個查找所有的belongsTo表中獲取數據? – ajt 2014-08-30 11:44:03

+0

我在答案中嘗試了上面的代碼,但是我不能在視圖中顯示數據。我看到陣列,但顯示數據從視圖不工作.... foreach($學生爲$ item2): 回聲'​​'。 $ ITEM2 [ '學生'] [ '身份證'。」'; //錯誤 – ajt 2014-08-30 13:51:30

+0

注意(8):未定義索引:顯示數據時。我如何簡單地在視圖中顯示數據,因爲我的代碼不能在foreach中使用($ student爲$ item2): echo'​​'。 $ ITEM2 [ '學生'] [ '身份證'。」';必須有一個簡單的答案。 HABTM已經很糟糕了 – ajt 2014-08-30 14:09:13