我有一个实体Shop和一个相关实体ShopProduct,具有以下关系:
/**
* @ORM\OneToMany(targetEntity="ShopProduct", mappedBy="shopid", fetch="EXTRA_LAZY")
*/
private $products;
Run Code Online (Sandbox Code Playgroud)
在树枝模板,我想访问计数的products,所以我访问
{{ entity.getProducts().count }}
Run Code Online (Sandbox Code Playgroud)
但是当使用symfony2探查器查看查询的数量和内容时,我发现发出了完整的选择,而不是COUNT我期望的(基于文档).
对每个Shops 发出完全选择会导致250Mb +的内存使用量和30+秒的页面加载时间,这是不希望的.
添加之后fetch="EXTRA_LAZY"我已经清除了学说缓存.
我是否忽略了某些东西,使用错误的方法或误解了文档?
[编辑]
doctrine/annotations v1.1
doctrine/cache v1.0
doctrine/collections v1.1
doctrine/common 2.4.0-RC1
doctrine/data-fixtures dev-master eef10f6
doctrine/dbal 2.3.3
doctrine/doctrine-bundle v1.2.0-beta1
doctrine/doctrine-fixtures-bundle dev-master 275540d
doctrine/doctrine-migrations-bundle dev-master 99c0192
doctrine/inflector v1.0
doctrine/lexer v1.0
doctrine/migrations dev-master e1f6efc
doctrine/orm 2.3.3
Run Code Online (Sandbox Code Playgroud) symfony/symfony v2.2.0
monolog/monolog v1.4.1
composer.phar update昨天运行后,monolog被更新; 今天运行相同的命令导致以下错误消息:
Loading composer repositories with package information
Updating dependencies (including require-dev)
Generating autoload files
[ErrorException]
Warning: constant(): Couldn't find constant Monolog\Logger::DEBUG in [path]\vendor\symfony\monolog-bundle\Symfony\Bundle\MonologBundle\DependencyInjection\MonologExtension.php line 109
Run Code Online (Sandbox Code Playgroud)
(我认为)config_dev.yml的相关部分
monolog:
handlers:
main:
type: stream
path: %kernel.logs_dir%/%kernel.environment%.log
level: debug
firephp:
type: firephp
level: info
Run Code Online (Sandbox Code Playgroud)
是否有需要额外配置的更改,或者是否还有其他事情发生?