php - 创建自定义存储库后如何访问 Doctrine 定义的方法?

标签 php symfony zend-framework2 doctrine

我正在使用 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/

相关文章:

sql - 只有 ID 的表和许多联结表

unit-testing - Zend Framework 2 & PHPUnit - 模拟 Zend\Db\Adapter\Adapter 类

php - 有没有关于 zend framework 2 的基本概述?

php - 使用 PHP 循环生成 JavaScript 代码时 $().click() 出现问题

php - Doctrine 不允许 ResultSetMappingBuilder 工作

symfony - 无法在 Sylius 中加载自定义包?

php - 与 zf2 中列的静态值连接

php - hhvm nginx 不返回 upload_max_filesize/post_max_size 的值

javascript - PHP/JavaScript : See if someone is visiting the same url

php - jQuery 将相同的功能应用于不同的 div