【发布时间】:2018-06-27 15:07:09
【问题描述】:
我经常不得不这样做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 中有一个名为供应商的字段。
基本上是一个 findBy() 在查询之前从数据库中获取条件
【问题讨论】:
标签: php symfony doctrine-orm