我正在使用 ZF2 和 Doctrine 开发一个网站。我面临的问题是我在代码中使用 Doctrine 预定义的对象方法,如 findAll()、findOneBy()、findBy() 等。对于一些自定义操作,我已经为我的一个实体准备了一个自定义存储库。现在我无法访问预定义的方法。我已经使用 findAll() 方法编写了代码。但是在构建存储库之后,我不能简单地访问 findAll() 方法。我怎样才能同时访问自定义定义的方法和 Doctrine 定义的方法?
例如:
我像这样使用 findOneBy():
$udata = $this->em()->getRepository('Application\Entity\Usermain')->findOneBy(array('userEmail' => 'subh.laha@gmail.com'));
现在我已经准备好了 UsermainRepository,如下所示:
namespace Application\Entity\Repositories;
use Doctrine\ORM\EntityRepository;
use Doctrine\Common\Persistence\ObjectRepository;
class UsermainRepository extends EntityRepository
{
protected $sl;
public function __construct($sl){
$this->sl = $sl;
}
public function customFind($arr)
{
$qb = $this->sl->createQueryBuilder();
$whereStr = '';
if(count($arr)){
foreach($arr as $kvarr=>$varr){
$whereStr .= "u.$kvarr = '".$varr."'";
}
}
$qry = $qb->select('u')
->from('Application\Entity\Usermain','u')
->where($whereStr)
->getQuery()
->getResult();
return $qry;
}
}
现在可以访问了
$udata = $this->em()->getRepository('Application\Entity\Usermain')->customFind(array('userEmail' => 'subh.laha@gmail.com'));
但不是
$udata = $this->em()->getRepository('Application\Entity\Usermain')->findOneBy(array('userEmail' => 'subh.laha@gmail.com'));
为什么?我已经使用 Doctrine 定义的方法编写了代码。我现在可以做什么?
最佳答案
我认为您收到此错误是因为您覆盖了存储库的构造函数但未调用父构造函数,因此未正确设置必需的参数。
关于php - 创建自定义存储库后如何访问 Doctrine 定义的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30977690/