CakePHP-HABTM-获取联接数据库表的结果

CakePHP-HABTM-获取联接数据库表的结果,php,cakephp,many-to-many,cakephp-2.0,has-and-belongs-to-many,Php,Cakephp,Many To Many,Cakephp 2.0,Has And Belongs To Many,我使用的是CakePHP2.0,在用户和课程之间有一种多对多的关系。 我有一个数据库表users,courses和courses\u users 问题是删除已与用户关联的课程。如果在courses\u users中存在与用户的关联,我不会删除它们 所以我在我的模型Course.php function beforeDelete() { if (??? == 0) { return true; } return false; } 我需要的是用CakePHP

我使用的是CakePHP2.0,在用户和课程之间有一种多对多的关系。 我有一个数据库表
users
courses
courses\u users

问题是删除已与用户关联的课程。如果在
courses\u 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关系中我怎么能做到这一点呢


致以最诚挚的问候。

为什么不为课程用户创建一个模型?

为什么不为课程用户创建一个模型?

您可以像为hasMany检查一样进行检查,因为一个课程有多个用户,而一个用户有多个课程

所以试试这个(你不需要创建UsersUsers或CoursesUser模型)

在课程模式中:

public $hasAndBelongsToMany = array('User');
//用你的方法

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

您可以像检查hasMany一样进行检查,因为一个课程有多个用户,而一个用户有多个课程

所以试试这个(你不需要创建UsersUsers或CoursesUser模型)

在课程模式中:

public $hasAndBelongsToMany = array('User');
//用你的方法

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

因为我不需要它?所有这些都是通过HABTM关系完成的,除了描述的问题之外,它工作得很好。我不想写原始SQL,因为我不需要它?所有这些都是通过HABTM关系完成的,除了描述的问题之外,它工作得很好。我不想编写原始SQL。我已经尝试过了,但是我得到了错误
致命错误:对非对象调用成员函数find()
,因此
$this->CoursesUser
不是我模型中的对象。然后尝试UserScorse。我100%确信定义HABTM关系将创建一个名为CoursesUser或UserScorse的链接模型。啊,我发现了我的错误!我写了
CourseUser
,而不是
CourseUser
。非常感谢,现在我知道了它是如何工作的。我已经尝试过了,但是我得到了错误
致命错误:对非对象调用成员函数find()
,因此
$this->CoursesUser
不是我模型中的对象。然后尝试UserScorse。我100%确信定义HABTM关系将创建一个名为CoursesUser或UserScorse的链接模型。啊,我发现了我的错误!我写了
CourseUser
,而不是
CourseUser
。非常感谢,现在我知道这是怎么回事了。