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

时间:2015-12-15 09:01:06

标签: php mysql orm triggers redbean

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

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

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

然后我推断,使用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,这将触发对象1的更新。

1 个答案:

答案 0 :(得分:1)

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

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

    R :: debug(TRUE,3);

  2. 访问并打印日志:

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

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