Symfony:如何对实体的One2Many / Many2One进行排序?

时间:2015-09-30 04:57:04

标签: php symfony sorting orm doctrine-orm

我有三个实体:ProductProductPicturePicture

我想按照它的位置对图片进行排序,并尝试this,代码如下。

结果:它没有按位置对已连接的图片进行排序。它按照图片分类产品'位置。

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

有什么想法吗?提前谢谢!

实体:产品

// ...
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;

    // ...
}

1 个答案:

答案 0 :(得分:0)

docs是对的:

<?php
/** @Entity **/
class User
{
    // ...

    /**
     * @ManyToMany(targetEntity="Group")
     * @OrderBy({"name" = "ASC"})
     **/
    private $groups;
}

在我的情况下,findAll()的{​​{1}} - 方法被覆盖,导致了这个混乱。如果您遇到同样的问题,请确保您的自定义查询与教条默认值不冲突。 : - )