Doctrine findBy with parameters self fetching

时间:2018-01-18 13:58:40

标签: php symfony doctrine-orm

我经常要这样做findBy(array('criteria'=> $someObject),其中$ someObject是预先填充的对象。我的问题是:是否有一个内置函数给出$ someObject id并且他的实体类型从数据库中获取他然后从上面执行findBy ???像这样:

public function findByDiscriminator($slave, $idSlave, $discriminator, $discriminatorCriteria)
{
    $slaveManager = $this->container->get('doctrine')->getRepository("AppBundle:$slave");
    $slaveEntity = $slaveManager->find($idSlave);
    return $this->findAllByCriteria(array($discriminatorCriteria => $slaveEntity), 0, 0, $discriminator);
}

public function findAllByCriteria($criteria, $limit = 0, $offset = 0, $repository)
{
    $total = $limit * $offset;
    $start = $limit * ($offset - 1);
    $spamManager = $this->container->get('doctrine')->getRepository("AppBundle:$repository");
    $spam = $spamManager->findBy($criteria, array(), $total != 0 ? $total : null, $start != 0 ? $start : null);
    return $spam;
}

如果,让我们说,我需要获取其供应商ID为456的杂货我会像这样查询 DAO->findByDiscriminator('SupplierEntity', 456, 'GroceryEntity', 'supplier')假设GroceryEntity中有一个名为supplier的字段。

基本上是一个findBy()在查询之前从数据库中提取标准

1 个答案:

答案 0 :(得分:1)

据我所知,doctrine提供的findBy方法没有这样的内置包装器。您可以在某个基类中定义它们,然后通过您的doctrine数据访问对象继承它们,这将最终为您正在寻找的代码带来可重用性。