确定哪个字段导致Doctrine重新查询数据库

Ian*_*ory 5 php orm doctrine doctrine-1.2

我正在几个Web应用程序项目中使用Doctrine和Symfony.

我已经优化了这些项目中的许多查询,只选择数据库中所需的字段.但是随着时间的推移,新的功能被添加了 - 在一些情况下 - 在代码中使用了额外的字段,导致Doctrine延迟加载器重新查询数据库并在一些页面上驱动查询数量从3到100+

所以我需要更新原始查询以包含所有必填字段.但是,Doctrine似乎没有一种简单的方法可以记录哪个字段导致发出附加查询 - 因此,筛选代码以查找原始查询中不存在的字段的使用是一项艰苦的工作.

当getter访问一个没有水合的字段时,有没有办法让Doctrine记录?

小智 1

我没有遇到过这个问题,只是查看了 Doctrine_Record 类。您是否尝试过向 _get() 方法添加一些调试输出?我认为这部分是您应该寻找解决方案的地方:

    if (array_key_exists($fieldName, $this->_data)) {
        // check if the value is the Doctrine_Null object located in self::$_null)
        if ($this->_data[$fieldName] === self::$_null && $load) {
            $this->load();
        }
Run Code Online (Sandbox Code Playgroud)