通过外来属性

时间:2015-08-27 19:33:52

标签: symfony doctrine one-to-many

是否可以使用外来属性订购多对多关联?

例如:假设有3个实体Client,Order和Dish。为了论证,请说客户和订单之间存在一对多关联,并且Order和Dish之间存在多对一关联。那个Dish有一个名为price的字段

因此,客户可以下多个订单,每个订单对应一个菜。

我想根据菜肴的价格对一对多关联进行排序。即,为客户实体提供getOrders()方法,该方法返回按$ order-> getDish() - > getPrice()排序的订单。

我知道我可以通过使用Query来实现这个功能(我不希望这样,因为我无法访问客户端实体中的存储库),或者通过对内存中的订单进行排序(这比较慢) ),但我宁愿让Doctrine做这项工作。

1 个答案:

答案 0 :(得分:0)

只需使用注释

**
 * @ORM\ManyToOne(targetEntity="Dish")
 * @ORM\OrderBy({"price" = "DESC"})
 */
private $dish;

我的答案是基于你的描述,但我不确定一个订单只能有一个菜(否则订购会没用,我错了吗?)

如果您需要更改关系基数,当然,您可以:答案的地球是OrderBy注释