我有三个实体:Product
, ProductPicture
和Picture
。
我想按位置对图片进行排序,并尝试了下面的代码。
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;
}
在我的例子中,repository
的findAll()
-方法被覆盖了,这导致了这种混乱。如果您遇到同样的问题,请确保您的自定义查询与原则默认值不冲突。: -)