symfony 使用PHP 8属性的实体中OrderBy的语法是什么

dojqjjoe  于 2022-11-16  发布在  PHP
关注(0)|答案(1)|浏览(112)

根据Doctrine documentation,可以使用@OrderBy({"name" = "ASC"})对实体中的字段进行排序。使用PHP 8属性,字段定义可能如下所示:

#[ORM\Column(length: 25)]
    private ?string $food_name;

不过,再加上这样一个排序:#[ORM\OrderBy({"food_name" = "ASC"})]是不可接受的语法。#[ORM\OrderBy("food_name" = "ASC")]也是。
可接受的语法(如#[ORM\OrderBy('food_name = ASC')])会导致

Doctrine\ORM\Mapping\OrderBy::__construct(): Argument #1 ($value) must be of type array, string given

对于本用例,Food是与Meal的ManyToMany关系中的集合字段。我尝试完成一个排序字段,以便使用{% for food in meal.foods %}的模板将呈现一个预先排序的食物名称列表。
A)是否可以在Food实体中完成此操作?或B)是否应该在Meal实体中完成此操作?或C)是否无法实现预分类字段?
如果可以进行预排序,正确的语法是什么?

g52tjvyc

g52tjvyc1#

在Meal.foods上添加属性:

#[ORM\OrderBy(["food_name" => "ASC"])]
private $foods;

另请参阅此处的文档:wwwhttps://www.doctrine-project.org/projects/doctrine-orm/en/2.13/reference/attributes-reference.html#attrref_orderby

相关问题