2010-05-15 131 views
4

我在用户和位置之间有HABTM关系。两种型号都有适当的$hasAndBelongsToMany变量组。CakePHP hasAndBelongsToMany(HABTM)删除加入记录

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

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

但是,我是CakePHP的新手,所以我确信我缺少一些东西。我曾尝试将级联设置为false,并使用用户,用户 - >天气,天气 - >用户更改模型顺序。没有运气。

在此先感谢您的帮助。

回答

8

不太确定Weather与您的模型有什么关系,所以我只想用传统名称,LocationsUser是加入表格。这应该删除该用户之间的所有关联ID为$id和任何地点:

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

还要注意的是你缺少你的代码片段一个右括号。

+1

是的,对不起,该模型实际上是天气的位置,我交替使用它们。你的代码是现货,我没有意识到我可以参考关联模型。这是我的完整性。工作恰到好处! '$ this-> User-> UsersWeather-> deleteAll(array('UsersWeather.weather_id'=> $ this-> data ['weather_ids'],'UsersWeather.user_id'=> $ this-> user ['User '] [' ID']))' – 2010-05-15 17:06:44