如何在 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');
},
])
我得到一个名为“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');
},
])