CakePHP hasAndBelongsToMany (HABTM) 删除加入记录

Posted

技术标签:

【中文标题】CakePHP hasAndBelongsToMany (HABTM) 删除加入记录【英文标题】:CakePHP hasAndBelongsToMany (HABTM) Delete Joining Record 【发布时间】:2010-05-15 02:53:45 【问题描述】:

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

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

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

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

提前感谢您的帮助。

【问题讨论】:

【参考方案1】:

不太确定Weather 与您的模型有什么关系,所以我将使用传统名称,LocationsUser 是连接表。这应该会删除 ID 为 $id 的用户与任何位置之间的所有关联:

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

另请注意,您的代码 sn-p 中缺少右括号。

【讨论】:

是的,抱歉,模型实际上是天气位置,我可以互换使用它们。你的代码是正确的,我没有意识到我可以引用关联模型。这就是我所拥有的完整性。效果刚刚好! $this->User->UsersWeather->deleteAll(array('UsersWeather.weather_id' => $this->data['weather_ids'], 'UsersWeather.user_id' => $this->user['User']['id']))

以上是关于CakePHP hasAndBelongsToMany (HABTM) 删除加入记录的主要内容,如果未能解决你的问题,请参考以下文章

php [cakephp:mysqldump] mysqldumpのcakephp実装サンプル。#php #cakephp #mysql

ORM如何在CakePHP3中运行

使用 Cakephp-jwt-auth [CakePHP 3] 过期后颁发新令牌

从 cakephp 3.x 迁移到 cakephp 4.x [关闭]

CakePHP 2.2.1 - 在表单上显示 CakePHP 错误 - 自定义验证

php [cakephp:AuthComponent示例] AuthComponent的示例代码。 #cakephp