我使用Symfony 4,并且我有一个OneToMany关系。我想按特定顺序订购此关系。目前,我仅按ASC订购:
/**
* @ORM\OneToMany(targetEntity="App\Entity\Ingredients", mappedBy="product", fetch="EAGER")
* @ORM\OrderBy({"family" = "ASC"})
*/
private $ingredients;
它完美地工作。
现在,我想按特定的顺序排序:“蔬菜”,“水果”,然后是“肉”。
我尝试过:
/**
* @ORM\OneToMany(targetEntity="App\Entity\Ingredients", mappedBy="product", fetch="EAGER")
* @ORM\OrderBy({"family" = "vegetables, fruits, meat"})
*/
private $ingredients;
这当然是行不通的。仍在尝试,但是有一种简单的方法可以实现吗?
答案 0 :(得分:0)
仅允许OrderBy中的DQL代码段包含不合格,未加引号的字段名称以及可选的ASC / DESC位置声明。多个字段用逗号(,)分隔。引用的字段名称必须存在于@ManyToMany或@OneToMany批注的targetEntity类上。
但是,如果您使用DQL,则应该可以通过以下方式完成此操作:
$qb = $em->getRepository(Ingredients::class)->createQueryBuilder('i');
$results = $qb->orderBy('FIELD(family,vegetables,fruits,meat)')
->getQuery()
->getResults();
**我尚未测试此代码**