【发布时间】:2019-12-16 01:01:49
【问题描述】:
有一种方法可以覆盖所有实体存储库的默认查找器方法
例如,这是 Doctrine\ORM\EntityRepository 中的默认方法 findBy
public function findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
{
$persister = $this->_em->getUnitOfWork()->getEntityPersister($this->_entityName);
return $persister->loadAll($criteria, $orderBy, $limit, $offset);
}
但我的需求是这样的
public function findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
{
$persister = $this->_em->getUnitOfWork()->getEntityPersister($this->_entityName);
$criteria['foo'] = 'bar';
return $persister->loadAll($criteria, $orderBy, $limit, $offset);
}
我想通过修改条件数组并在需要时添加一些自定义条件属性来创建一个服务来覆盖此方法。 我知道我可以覆盖每个实体的存储库,但我的项目已经扩大,现在我想要一个实用的解决方案来避免更改所有实体存储库。
【问题讨论】:
-
你好,为什么不能给这个现有的方法注入海关
$criteria? -
这很恶心 ;) 请改用filters。
-
@Weenesta-MathieuDormeval 我有一个大型项目,我想避免在整个项目中为大约三十种方法注入海关标准
-
@emix 和你的回答我刚刚完成了一个使用我的自定义过滤器的监听器,谢谢 :)
-
很高兴我能帮上忙。请点赞并接受我的回答:)祝你好运。
标签: symfony doctrine-orm doctrine