Symfony - 在数据库外出时记录runnables本地查询

时间:2015-02-10 11:10:27

标签: symfony doctrine-orm

我正在开发一个提供休息网络服务的Symfony应用程序(带有JSON的简单HTTP请求)。 该服务检查一些规则并在两个MySQL表中插入几行(只写)。

出于优化原因,即使Doctrine包可用,我也使用本机MySQL Query(使用bind params)来插入这些行。

我的需求是:如果出于任何原因,数据库不可用,请写" runnables"查询到日志文件。

最终目的是当数据库恢复时,我希望能够直接执行数据库中文件的内容。 请注意,没有唯一约束(pk是生成的uuid)并且没有要处理的锁或事务(简单的插入语句)。

我编写了一个自定义SQLLogger,但是在调用$connection->insert(...)时,连接在调用logger之前失败。

所以,我的问题是:有一种方法可以在没有数据库连接的情况下获得最终查询(带有绑定参数)吗?

或者我应该重写将params绑定到查询中的机制,并在数据库不可用时自己记录?

致以最诚挚的问候,

于连

1 个答案:

答案 0 :(得分:0)

由于参数的最终查询是由数据库构建的,无法使用PHP构建查询,并且保证查询与数据库相同

在没有绑定参数的情况下构建查询的唯一方法,但这显然不是一个好习惯。

所以,如果数据库不可用,我最终决定将所有JSON(API请求体)存储在文件中。

因此,当数据库返回时,我可以重放原始HTTP查询,而不是重放SQL查询。

希望这个迟到的自助者会帮助别人。

最好的问候。