1

我使用的是CakePHP 2.0,我在用戶和課程之間有多對多的關係。 我有一個數據庫表users,coursescourses_usersCakePHP - HABTM - 獲取加入數據庫表的結果

問題是刪除已經與用戶關聯的課程。如果在courses_users中與用戶有關聯,我將不會刪除它們。

所以我在我的模型中寫道Course.php

function beforeDelete() { 
    if (??? == 0) { 
     return true; 
    } 
    return false; 
} 

我需要的是寫在CakePHP的數據庫查詢,這樣我就可以判斷一個過程不與任何用戶(x == 0)。 我該怎麼做?以1:n的關係,我可以寫這

if($this->User->find("count", array("conditions" => array("course_id" => $this->id))) == 0) 

但我怎麼能做到這一點在我的n:m關係?

最好的問候。

回答

1

您可以像查看hasMany一樣檢查,因爲一個課程有許多用戶和一個用戶有許多課程。

那麼試試這個(你不會需要創建UsersCourse或CoursesUser模型)

在課程模式:

public $hasAndBelongsToMany = array('User'); 

//在你的方法

if($this->CoursesUser->find("count", array("conditions" => array("course_id" => $this->id))) == 0); 
+0

我已經試過這個,但是我得到錯誤'致命錯誤:調用一個非對象'的成員函數find(),所以'$ this-> CoursesUser'不是我模型中的一個對象。 – Tim 2012-02-11 15:32:17

+0

然後嘗試UsersCourse。我100%肯定定義了一個HABTM關係會創建一個叫做CoursesUser或UsersCourse的鏈接模型。 – 2012-02-11 15:35:44

+0

啊,我發現我的錯誤!我寫了'CourseUser'而不是'CoursesUser'。非常感謝,現在我知道這是如何工作的。 – Tim 2012-02-11 15:39:16

0

爲什麼不創建courses_user模型?

+0

因爲我會不會需要它?所有這些都是在HABTM關係中完成的,除了所描述的問題外,它工作正常。我不想寫入原始SQL。 – Tim 2012-02-11 15:01:54