Symfony:如何排序一个实体的One2Many/Many2One


Symfony: how to sort One2Many/Many2One of an entity?

我有三个实体:Product, ProductPicturePicture

我想按位置对图片进行排序,并尝试了下面的代码。

Result:它不按位置排序连接的图片。它根据图片的位置对产品进行排序。

我困惑。据我所知,我遵循了医生,但得到了一个奇怪的结果。缓存已被清除。

任何想法?提前感谢!

产品实体

:

// ...
class Product {
    /**
     * @ORM'Column(name="id", type="integer")
     * @ORM'Id
     * @ORM'GeneratedValue
     */
    protected $id;

    /**
     * @ORM'OneToMany(targetEntity="ProductPicture", mappedBy="product")
     * @ORM'OrderBy({"position" = "DESC"})    // <------ !!!
     */
    protected $pictures;
    // ...
}

实体: ProductPicture

// ...
class ProductPicture {
    /**
     * @ORM'Column(name="id", type="integer")
     * @ORM'Id
     * @ORM'GeneratedValue
     */
    protected $id;

    /**
     * @ORM'Column(type="integer")
     */
    protected $position;

    /**
     * @ORM'ManyToOne(targetEntity="Product", inversedBy="pictures")
     * @ORM'JoinColumn(name="product_id", referencedColumnName="id")
     */
    protected $product;

    /**
     * @ORM'ManyToOne(targetEntity="Picture")
     * @ORM'JoinColumn(name="picture_id", referencedColumnName="id")
     */
    protected $picture;
    // ...
}
图片

实体:

// ...
class Picture {
    /**
     * @ORM'Column(name="id", type="integer")
     * @ORM'Id
     * @ORM'GeneratedValue
     */
    protected $id;

    /**
     * @ORM'Column(name="path", type="string")
     */
    protected $path;
    // ...
}

文档是正确的:

<?php
/** @Entity **/
class User
{
    // ...
    /**
     * @ManyToMany(targetEntity="Group")
     * @OrderBy({"name" = "ASC"})
     **/
    private $groups;
}

在我的例子中,repositoryfindAll() -方法被覆盖了,这导致了这种混乱。如果您遇到同样的问题,请确保您的自定义查询与原则默认值不冲突。: -)