Ant*_*nko 17 apc symfony doctrine-orm
我正在使用带有Doctrine 2.1的Symfony 2.0.10并且具有相当简单的查询(见下文),其中我想通过APC(版本3.1.7,为其启用1GB内存)缓存结果,useResultCache(true, 600)并保持水合模式为\Doctrine\ORM\Query::HYDRATE_OBJECT.
问题是多对多关系(Doctrine\ORM\PersistentCollection)不会被缓存,每次缓存主要查询结果时,连接的实体都被设置为null.当我设置水合模式时,相同的查询在APC中缓存得很好\Doctrine\ORM\Query::HYDRATE_ARRAY,但对我来说这是不可接受的解决方案,因为我无法重做许多模板来实现这一点.
请建议如何在APC中缓存所有已连接实体的属性?请不要指向文档,因为我认为我已经学会了解决这个问题:)
$property = $em
->createQueryBuilder()
->select('p,u')
->from('MyBundle:Property', 'p')
->leftJoin('p.users', 'u')
->where('p.id in (:id)')
->setParameter('id', 123)
->getQuery()
->useResultCache(true, 60)
->setHydrationMode(\Doctrine\ORM\Query::HYDRATE_OBJECT)
->getResult();
Run Code Online (Sandbox Code Playgroud)
class User {
/**
* @ORM\ManyToMany(targetEntity="Property", mappedBy="users", cascade={"all"}, fetch="EAGER")
*/
protected $properties;
}
Run Code Online (Sandbox Code Playgroud)
class Property {
/**
* @ORM\ManyToMany(targetEntity="User", inversedBy="properties", cascade={"all"}, fetch="EAGER")
* @ORM\JoinTable(name="user_property",
* joinColumns={@ORM\JoinColumn(name="property_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")}
* )
*/
protected $users;
}
Run Code Online (Sandbox Code Playgroud)
以下是与缓存问题相关的 Doctrine JIRA 问题,它最接近问题的描述:
http://www.doctrine-project.org/jira/browse/DDC-217
https://github.com/doctrine/doctrine2/issues/2861
我的观点是,这一点已在原则 2.2 中得到解决
| 归档时间: |
|
| 查看次数: |
3246 次 |
| 最近记录: |