我有一个实体"Menus",它包含几个实体"Dishes"(ManyToMany)。
实体"Dish"有一个实体"DishType"(ManyToOne)。
实体DishType包含一个属性"displayOrder"(我想在上面设置顺序)。
在Twig中,我想做一个循环:对于每个菜单,显示按"DishType"分组的每道菜及其本身,按DishType的属性"displayOrder"排序。
在我的实体"菜单"中,我有:
/**
* @ORMManyToMany(targetEntity="Dish", inversedBy="menus", cascade={"persist"})
* @ORMJoinTable(name="dish_menus")
* @ORMOrderBy({"dishType" = "ASC"})
*/
protected $dishes;
但我想要这样的东西
@ORMOrderBy({"dishType.displayOrder" = "ASC"})
有办法做到这一点吗?
难道没有一种方法可以像一样将默认订单添加到整个实体"DishType"中吗
* @ORMOrderBy({"displayOrder" = "ASC"})
提前感谢您的建议。
远非理想,但我用一个trick扩展来实现这一点,我本质上是在trick中调用一个过滤器来为我排序实体的子级
public function orderPosition($arr) {
$size = count($arr);
for ($i = 0; $i < $size; $i++) {
for ($j = 0; $j < $size - 1 - $i; $j++) {
if ($arr[$j + 1]->getPosition() < $arr[$j]->getPosition()) {
$this->swap($arr, $j, $j + 1);
}
}
}
return $arr;
}
然后称之为树枝
{%for single in orderPosition($entity->otherEntity) %}
{{single}}
{%endfor%}