1

私はCakePHP 2.0を使用しています。ユーザーとコース間には多対多の関係があります。 データベーステーブルusers,coursesおよびcourses_usersがあります。CakePHP - HABTM - 結合データベーステーブルの結果を取得

問題は、既にユーザーに関連付けられているコースを削除することです。 courses_usersにユーザーとの関連付けがあれば削除しません。

は、だから、私は必要なもの、私のモデルにCourse.php

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

を書いたコースは、任意のユーザー(のx == 0)に関連付けられていない場合、私は判断できるように、CakePHPの中に書かれたデータベースクエリです。 どうすればいいですか? 1:nの関係でこれを書くことができます

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

n:mの関係でこれを行うにはどうすればよいですか?

よろしくお願いいたします。

答えて

1

1つのCourse hasMany Userと1つのUser hasMany Courseがあるため、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

+0

次に、「ユーザーコース」を試してください。私は、HABTM関係を定義することで、CoursesUserまたはUsersCourseというリンクモデルが作成されることを100%確信しています。 –

+0

ああ、私のエラーが見つかりました!私は 'CoursesUser'の代わりに' CourseUser'を書きました。ありがとう、私はこれがどのように動作するか知っています。 – Tim

0

なぜcourses_userのモデルを作成しないのですか?

+0

をそれを必要としませんか?すべてがHABTM関係で行われ、問題は説明されている以外は問題ありません。そして、私は生のSQLを書いたくありません。 – Tim