【问题标题】:Doctrine findBy with parameters self fetching带有参数自取的学说 findBy
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • 这就是我目前所做的,只是想确定一下。非常感谢。支持(如果我的声誉允许的话)
    猜你喜欢
    • 2012-03-04
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    • 2016-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多