gpt4 book ai didi

php - redbean php 是否考虑创建 mysql-triggers?

转载 作者:行者123 更新时间:2023-11-29 11:49:54 25 4
gpt4 key购买 nike

我正在使用 redbeanphp 4.3,并努力理解为什么 mysql-db-trigger 没有被触发(或可能被忽略)。

当我直接在数据库中工作(使用 phpmyadmin)并在表 B 中插入一行时,表 A 中的列会更新。当我间接使用数据库时(通过rest-api,因此使用redbean php),该行也会插入表B中,但表A中的列不会更新。 p>

我在我的 android 应用程序中也发现了与 Sugarorm 完全相同的行为。

然后我推断,使用 ORM 会忽略触发器的使用。但到目前为止我没有找到任何支持我论文的说法,在一些论坛、redbean 文档和 rd.php 源代码中都没有。

解释或任何帮助将不胜感激。提前致谢。

编辑1:使用 mysqli 和 pdo-driver 的脚本确实会导致与手动插入相同的行为(列被更新)。因此PDO不能成为原因。

解决方案:

表 A 和表 B 具有 1:N 关系。

问题是滥用了 redbean 的 R::store() 方法。 A表的object1被加载,B表的object2被插入(通过R::store()),触发器被执行,但是A表的object1无法识别。 object1 上的最终 R::store() 已将后台更新覆盖为初始状态。

所以解决方案非常简单:删除表 B 的对象上的 R::store()。当对A表的object1调用R::store()时,它会先更新实体A,然后插入实体B,这会触发object1的更新。

最佳答案

尝试调试 redBean 创建的 sql 查询,并检查插入后是否有列更新或其他内容。

  1. 配置redBean来记录sql查询:

    R::debug( TRUE, 3 );

  2. 访问并打印日志:

    $logs = R::getDatabaseAdapter()->getDatabase()->getLogger()->getLogs();print_r( $logs );

您可以在其官方 site 上找到有关调试 redBean 的更多信息.

关于php - redbean php 是否考虑创建 mysql-triggers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34284862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com