编程语言
首页 > 编程语言> > php-Symfony / Doctrine ManyToMany按分配顺序

php-Symfony / Doctrine ManyToMany按分配顺序

作者:互联网

我有一个名为Game的实体,该实体具有一个JoinTable与一个名为Question的实体的ManyToMany连接.

效果很好.问题是,我需要按选择的确切顺序排列问题,而不是按问题ID排序,因为我现在在Game类上调用getQuestions()时就得到了它们.
有没有办法做到这一点?

这些问题都是通过$game-> addQuestion($question);添加的.添加问题后,问题已经存在,游戏仍然存在.

...
class Game {
    ...
    /**
     * @ORM\ManyToMany(targetEntity="Question")
     * @ORM\JoinTable(name="Games_to_Questions",
     *      joinColumns={@ORM\JoinColumn(name="game_id", referencedColumnName="id")},
     *      inverseJoinColumns={@ORM\JoinColumn(name="question_id", referencedColumnName="id")}
     *      )
     **/
    private $questions;
    ...
}
...
class Question {
    ...
}
...

解决方法:

您将必须添加带有排序顺序列的中介实体.我们称它为GameQuestion.

/**
 * @ORM\Table(name="game_question")
 * @ORM\Entity(repositoryClass="Gedmo\Sortable\Entity\Repository\SortableRepository")
 */
class GameQuestion {
    private $game;
    private $question;
    /**
     * @Gedmo\SortablePosition
     */
    private $sortOrder;
}

标签:doctrine-orm,join,symfony,many-to-many,php
来源: https://codeday.me/bug/20191120/2046820.html