我有一个实体"菜单",其中包含多个实体"菜肴" (多对多)。
实体" Dish"有一个实体" DishType" (多对一)。
实体DishType包含一个属性" displayOrder" (我要在其上设置顺序)。
在Twig中,我想制作一个循环: foreach菜单,显示每个菜肴按" DishType"和它本身,由属性" displayOrder" DishType。
在我的实体"菜单"中,我有:
/**
* @ORM\ManyToMany(targetEntity="Dish", inversedBy="menus", cascade={"persist"})
* @ORM\JoinTable(name="dish_menus")
* @ORM\OrderBy({"dishType" = "ASC"})
*/
protected $dishes;
但是我想要像
这样的东西@ORM\OrderBy({"dishType.displayOrder" = "ASC"})
有没有办法呢?
是否有办法向整个实体添加默认订单" DishType"像
* @ORM\OrderBy({"displayOrder" = "ASC"})
提前感谢您的建议。
答案 0 :(得分:0)
远非理想,但我用枝条扩展做这件事,我基本上在树枝上调用过滤器来为我排序实体的孩子。使用此功能创建树枝扩展(请参阅twig extensions here)
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%}