2015-09-30 31 views
0

我有三个实体:Product,ProductPicturePictureSymfony:如何排序One2Many/Many2One的一个实体?

我想的照片排序它的位置和下方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; 

    // ... 
} 
+0

你是如何获取的图片?你在做'$ product-> getPictures() - > getPicture() - > getPath()'?如果按照图片的位置对产品进行排序,那么您展示的是哪种查询? –

回答

0

docs是正确的:

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

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

在我的情况下repositoryfindAll() - 方法被覆盖而导致这个烂摊子。请确保,如果您遇到同样的问题,您的自定义查询与教义默认值不冲突。 :-)

相关问题