这类似于之前发布的这个问题: In Symfony2, should I use an Entity or a custom Repository
假设我有一个汽车实体和一个车轮实体。一辆车有很多车轮,但车轮只有一辆车。
在我的控制器中,我已经可以使用汽车了。我正在使用这种关系来获得属于汽车的轮子。
$car = $this->getCar();
$wheels= $car->getWheels();
上述工作使我能够访问属于当前汽车的车轮。但是我不需要使用所有车轮,而只需要平坦= 0的车轮。
有没有比存储库更好的方法来获取属于car实体的轮子,其中flat = 0?
我在考虑在汽车实体中创建一个吸气剂(getNonFlatWheels)然后过滤车轮,以便只返回非扁平车轮。
似乎会有更标准的解决方案。
答案 0 :(得分:3)
Simone的答案应该这样做,但同样,这取决于你的实体结构以及你想用你的$ wheels对象做什么。
例如,假设您安装了最新版本的Twig,您可以遍历$ wheels,只保留flat = 0的那些:
{% for wheel in wheels if wheel.flat == 0 %}
//do whatever
{% endfor %}
希望它有用
答案 1 :(得分: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();
}
我希望它会对你有所帮助。