为了账号安全,请及时绑定邮箱和手机立即绑定

按连接表的列对多对多关系进行排序

按连接表的列对多对多关系进行排序

PHP
慕田峪9158850 2021-06-11 18:39:22
否可以通过带有注释的实体中的连接表的列对 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;

}


查看完整回答
反对 回复 2021-06-13
  • 2 回答
  • 0 关注
  • 134 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信