2

这类似于之前发布的这个问题: 在 Symfony2 中,我应该使用实体还是自定义存储库

假设我有一个汽车实体和一个车轮实体。一辆车有很多轮子,但一个轮子只有一辆车。

在我的控制器中,我已经可以访问汽车了。我正在使用关系来获取属于汽车的车轮。

$car = $this->getCar();
$wheels= $car->getWheels();

以上工作,让我可以访问属于当前汽车的车轮。但是我不需要所有轮子,我只需要 flat = 0 的轮子。

有没有比存储库更好的方法来获取属于 flat = 0 的汽车实体的车轮?

我正在考虑在汽车实体(getNonFlatWheels)中创建一个吸气剂,然后过滤车轮,以便只返回非扁平车轮。

似乎会有一个更标准的解决方案。

4

2 回答 2

3

Simone 的回答应该这样做,但同样,这取决于您的实体结构以及您想对 $wheels 对象做什么。

例如,假设您安装了最新版本的 Twig,您可以遍历 $wheels 仅保留 flat = 0 的那些:

{% for wheel in wheels if wheel.flat == 0 %}
    //do whatever
{% endfor %}

希望它可以有用

于 2012-06-07T08:02:44.493 回答
2

我不知道您的实体结构,但在类似的情况下,我使用了这段代码。您可以尝试将其放在 CarRepository 类中。

/**
 * Get all non flat wheels
 *
 * @return Result
 */
public function getNonFlatWheels()
{
    $em = $this->getEntityManager();

    $query = $em
            ->createQuery("
                SELECT g
                FROM Acme\DemoBundle\Entity\Car c
                JOIN c.wheels w
                WHERE w.flat = :flat
            ")
            ->setParameter('flat', 0);

    return $query->getResult();
}

我希望它会帮助你。

于 2012-06-07T05:36:56.217 回答