否可以通过带有注释的实体中的连接表的列对 ManyToMany 关系进行排序?我已经尝试过得到它工作,@ORM\JoinTable并且@ORM\JoinColumn,但这似乎并没有工作时。class Product { /** * @ORM\ManyToMany(targetEntity="App\Entity\Category") * @ORM\OrderBy({"name" = "ASC"}) */ private $categories;}class Category { use Knp\Translatable;}class CategoryTranslation { use Knp\Translation; /** * @ORM\Column(type="string", length=255) */ private $name;}我想@OrderBy({"CategoryTranslation.name" = "ASC")在 Product 实体中做一些类似的事情。或者有没有办法在@ManyToMany注释中执行存储库方法来手动构建查询以选择具有正确顺序的类别?
2 回答
精慕HU
TA贡献1845条经验 获得超8个赞
不确定您是否可以通过注释来做到这一点,但我已经通过一个简单的uasort函数实现了您正在寻找的结果。在您的Product实体中,为您的getCategories()getter尝试类似以下内容。
public function getCategories()
{
$categories = $this->categories;
uasort($catetories, [$this, 'mySortCategories']);
return $categories;
}
private function mySortCategories(Category $cat1, Category $cat2)
{
if ($cat1->getName() === $cat2->getName()) {
return 0;
}
return ($cat1->getName() < $cat2->getName()) ? -1 : 1;
}
- 2 回答
- 0 关注
- 134 浏览
添加回答
举报
0/150
提交
取消