Cakephp - HABTM 记录不会在唯一设置为 true 时删除

2024-02-20

CakePHP 的默认值 unique 设置为 true,我对其进行编码也是为了确保这一点。 所以我有以下数据库结构: 项目 HABTM 操作,将 unique 设置为 true。

情况如下:

当我删除 1 条或多条记录时,如果至少 1 条记录保持“活动状态”,则删除在保存时工作正常

当我删除所有记录(或 1 条记录,如果这是唯一的记录)时,保存时删除不起作用。它只是以这种方式保存所有现有记录。

我已经在保存之前使用 debug($this->request->data) 确保它不包含任何操作。


从您帖子评论中的讨论来看,我仍然感到困惑,但我了解到您正在尝试: 以类似于以下的格式保存 POST: 大批( '项目' => 数组( 'id' => '3' ) 和:

 $this->Item->SaveAll($this->request->data);

您的帖子应包含“操作”键:

array(
    'Item' => array(
        'id' => '3'
    ),
    'Action' => array(
        'Action' => array()
    )

当设置“操作”键时,Cake 知道它必须“遍历”关系及其魔力。 然后就会删除。

我刚刚在我正在开发的应用程序上对此进行了测试,实际上发现它是一个错误。 :D 问题 对于特定的 HATBM 关系,我必须使用手动生成的表单,因此在发布时不包含任何内容时,未设置关系键,并且未删除记录。我想表单助手会处理这个问题。

如果您遇到类似问题,可以通过两种不同的方式进行处理:

  1. 使用 JavaScript 隐藏输入

  2. 在控制器中检查是否设置了“Action”键,如果没有则添加它(作为空数组):

    $this->请求->数据['Action']['Action'] = array();

    这可能有点侵入性,但它会完成工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cakephp - HABTM 记录不会在唯一设置为 true 时删除 的相关文章

随机推荐

  • 如何修复 microk8s 上的“无法拉取镜像”

    我正在尝试遵循 docker 入门教程 但是当您必须使用 kubernetes 时 我会陷入困境 我正在使用 microk8s 创建集群 我的 Dockerfile FROM node 6 11 5WORKDIR usr src app C
  • 如何使用 Kibana 3 创建价值随时间变化的图表?

    我使用 Logstash 来存储包含车辆随时间变化的速度的日志文件 在 Kibana 3 中 如何生成一个显示随时间变化的值的面板 即 x 轴显示时间 y 轴显示相关值 例如车辆速度 我发现的大多数面板都会计算给定时间范围内事件的发生次数并
  • Tomcat 7 - 保护 webapps 文件夹下的文件夹

    我的网络应用程序是 myweb 在此网络应用程序中 我的代码引用 files 文件夹下的 123 pdf 例如 http localhost 8080 files 123 pdf webapps myweb files 123 pdf 当我
  • NodeJS:如何像C#一样生成Rfc2898DeriveBytes?

    我正在尝试使用 NodeJS 加密库和 C Rfc2898DeriveBytes 生成相同的密码哈希 使用 C 生成的 salt 时 NodeJs 实现不会生成相同的密钥 我究竟做错了什么 在 C 中 public static strin
  • symfony2 主义 onetoone 完整示例

    我尝试从示例中建立onetoone关系 http docs doctrine project org en latest tutorials composite primary keys html use case 2 simple dri
  • SQL Server 通知 - 我的 OnChange 不触发

    我想利用 SQL Server 通知来捕获 winforms 应用程序中数据库中的插入事件 我正在尝试使用 SQLDependency 对象 MSDN 文章使这看起来非常简单 所以我创建了一个小示例应用程序来尝试一下 该事件似乎仅在我第一次
  • HTML 表格列宽:固定宽度和可变宽度的结合

    我做了一个这样的表格 table style width 100 tr td aaa td td td td class fixed width bbb td td class fixed width ccc td tr table 我将如
  • Pycharm 中模板的自动完成功能

    每当我创建一个函数 将其设为视图并将模板映射到其上时 PyCharm 中的自动完成功能都会起作用 如果您输入类似的内容 book where book是一个模型 并且是您的上下文对象之一 那么它将为您提供一个包含可能完成的下拉菜单 但是 如
  • rand() 在 OS X Mavericks/XCode 5.1 上损坏? (或者,“这是一个巨大的安全漏洞,还是我只是一个糟糕的程序员?”)[重复]

    这个问题在这里已经有答案了 以下代码片段随机打乱 STL 整数数组 它在 Ubuntu 和 Red Hat 上都能正常工作 然而 在我的 Mac OS X 机器上 数组每次都会按照相同的顺序进行洗牌 代码的第二部分打印随机数生成器的输出 这
  • IronRuby 性能?

    虽然我知道 IronRuby 还没有准备好让全世界使用它 但我想知道这里是否有人尝试过它并测试它在原始性能方面与其他红宝石相比的表现如何 如果是这样 结果是什么 您是如何衡量性能的 哪些基准等 Edit IronRuby 团队维护了一个网站
  • 如何在剃刀代码块中插入空格?

    VS2013 MVC5 剃刀 VB 我希望 已答复 一词前面有空格 如何在以下 Razor 代码块中强制添加空格 Code If Model DisplayAnsweredFlag Then If Model Answered Then H
  • 将 python3.5 设置为 AWS 中的默认值?

    有没有办法让python3 5成为AWS中的默认python 每次我尝试下一次连接时 python2 7 是默认版本 pip 6 是最后一个版本 知道我在几分钟前更新了它 这是我遵循的方法 亚马逊 链接 http docs aws amaz
  • 了解 gsl::narrow 实现

    The C 核心指南 https github com isocpp CppCoreGuidelines blob master CppCoreGuidelines md has a narrow如果强制转换更改了值 则会抛出异常 看着微软
  • SELECT * 中有时会缺少计算列

    在 SQL Azure 中 我有一个或多或少像这样设置的表 其中有两个计算列 IsExpired and IsDeadlineExpired 简单地将不可为 null 的日期时间列与当前时间进行比较 CREATE TABLE dbo Stu
  • 带有预定义关键字参数的define_method

    我想定义一个采用关键字参数的方法 我希望它在未提供关键字参数时引发 并且我可以自己编写代码 但理想情况下我想让 Ruby 为我做这件事 另外我希望能够使用检查新定义的方法Method parameters 如果我使用速记 double sp
  • 覆盖rails update_all方法

    我需要覆盖轨道 活动记录 update all方法 以便它始终更新updated at场也是如此 我应该如何实现这一目标 将以下代码放入文件中 config initializers update all with touch rb cla
  • 将用户定义的库添加到 SVN

    我正在开发一个项目 我使用了许多外部库 jar 格式 我已将下载的所有外部 jar 添加到版本控制 subversion 的构建路径中 然而 最近我注意到许多库并不在 SVN 树中 我对此进行了一些研究 这些是我作为用户定义的库创建的库 并
  • 在函数中使用全局变量

    如何在函数内创建或使用全局变量 如何在一个函数中在其他函数中使用定义的全局变量 Failing to use the global keyword where appropriate often causes UnboundLocalErr
  • PostgreSQL 自定义异常?

    在 Firebird 中我们可以像这样声明自定义异常 CREATE EXCEPTION EXP CUSTOM 0 异常 自定义异常 这些存储在数据库级别 在存储过程中 我们可以像这样引发异常 异常 EXP CUSTOM 0 PostgreS
  • Cakephp - HABTM 记录不会在唯一设置为 true 时删除

    CakePHP 的默认值 unique 设置为 true 我对其进行编码也是为了确保这一点 所以我有以下数据库结构 项目 HABTM 操作 将 unique 设置为 true 情况如下 当我删除 1 条或多条记录时 如果至少 1 条记录保持