我经常要这样做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()在查询之前从数据库中提取标准
答案 0 :(得分:1)
据我所知,doctrine提供的findBy方法没有这样的内置包装器。您可以在某个基类中定义它们,然后通过您的doctrine数据访问对象继承它们,这将最终为您正在寻找的代码带来可重用性。