CakePHP hasAndBelongsToMany(HABTM)删除加入记录

时间:2010-05-15 02:53:46

标签: cakephp has-and-belongs-to-many

我在用户和位置之间有HABTM关系。两个模型都具有相应的$hasAndBelongsToMany变量集。

当我管理用户位置时,我想删除用户和位置之间的关联,而不是位置。显然,此位置可能属于其他用户。我希望以下代码只删除提供HABTM关联的连接表记录,但它删除了两个记录。

$this->Weather->deleteAll(array('Weather.id' => $this->data['weather_ids'], false);

但是,我是CakePHP的新手,所以我确信我错过了一些东西。我尝试将cascade设置为false并使用User,User-> Weather,Weather-> User更改模型顺序。没有运气。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:7)

不完全确定Weather与您的模型有何关联,因此我将使用传统名称,LocationsUser是加入表。这应删除ID为$id的用户与任何位置之间的所有关联:

$this->User->LocationsUser->deleteAll(array('LocationsUser.user_id' => $id), false);

另请注意,您的代码段中缺少结束括号。