Symfony学说按特定顺序进行OneTomany命令



我使用Symfony 4,并且我有一个OneTomany关系。我想通过特定订单订购此关系。现在,我仅通过ASC订购:

/**
 * @ORMOneToMany(targetEntity="AppEntityIngredients", mappedBy="product", fetch="EAGER")
 * @ORMOrderBy({"family" = "ASC"})
 */
private $ingredients;

它可以很好地工作。

现在我想按特定顺序订购:"蔬菜","水果"然后"肉"。

我尝试了:

/**
 * @ORMOneToMany(targetEntity="AppEntityIngredients", mappedBy="product", fetch="EAGER")
 * @ORMOrderBy({"family" = "vegetables, fruits, meat"})
 */
private $ingredients;

当然是行不通的。仍在尝试,但是有一种简单的方法可以实现它吗?

如https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/refereniation/annotations-referentiation.html#annref_orderf_orderby

仅允许Orderby中的DQL片段由未合并的,无引用的字段名称和可选的ASC/DESC位置语句组成。多个字段通过逗号分隔(,(。@manytomany或@Onetomany注释的目标范围必须存在引用的字段名称。

但是,如果您使用DQL,则应该能够使用以下操作来完成此操作:

$qb = $em->getRepository(Ingredients::class)->createQueryBuilder('i');
$results = $qb->orderBy('FIELD(family,vegetables,fruits,meat)')
              ->getQuery()
              ->getResults();

**我还没有测试过此代码**

相关内容

  • 没有找到相关文章

最新更新