如何在 ManyToMany 关系字段上进行排序

How to to an orderby on a ManyToMany relation field

我得到一个名为“Recipes”的实体,它与另一个名为“Ingredients”的实体有关系。

/**
 * @ORM\ManyToMany(targetEntity=Ingredients::class, inversedBy="recettes")
 */
private $ingredient;

我需要的是通过我的表单生成器列出所有成分,而且效果很好:

->add('ingredient', EntityType::class, [
            // looks for choices from this entity
            'class' => Ingredients::class,
            'choice_label' => 'nom',
            // used to render a select box, check boxes or radios
            'multiple' => true,
            'expanded' => true,
            'label' => 'Ingrédients de la recette'
        ])

但我需要按名称顺序列出它们,所以我尝试在我的“食谱成分字段”中添加这一行:

* @OrderBy({"nom" = "ASC"})

但是成分仍然没有按名称排序。

我错过了什么吗? :)

/**
 * ...
 * @ORM\OrderBy({"nom" = "ASC"})
 */
private $recettes;

->add('ingredient', EntityType::class, [
            // looks for choices from this entity
            'class' => Ingredients::class,
            'choice_label' => 'nom',
            // used to render a select box, check boxes or radios
            'multiple' => true,
            'expanded' => true,
            'label' => 'Ingrédients de la recette',
            'query_builder' => function (EntityRepository $er) {
                  return $er->createQueryBuilder('u')->orderBy('u.nom', 'ASC');
             },
        ])