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

否可以通过带有注释的实体中的连接表的列对 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注释中执行存储库方法来手动构建查询以选择具有正确顺序的类别?


慕田峪9158850
浏览 135回答 2
2回答

精慕HU

不确定您是否可以通过注释来做到这一点,但我已经通过一个简单的uasort函数实现了您正在寻找的结果。在您的Product实体中,为您的getCategories()getter尝试类似以下内容。public function getCategories(){&nbsp; &nbsp; $categories = $this->categories;&nbsp; &nbsp; uasort($catetories, [$this, 'mySortCategories']);&nbsp; &nbsp; return $categories;}private function mySortCategories(Category $cat1, Category $cat2){&nbsp; &nbsp; if ($cat1->getName() === $cat2->getName()) {&nbsp; &nbsp; &nbsp; &nbsp; return 0;&nbsp; &nbsp; }&nbsp; &nbsp; return ($cat1->getName() < $cat2->getName()) ? -1 : 1;}
打开App,查看更多内容
随时随地看视频慕课网APP