0

2 つの異なるエンティティにタグを追加するためのソリューションに取り組んでいます。フロントエンドでデータを簡単に取得するために、Tag_Mapping という名前の joinTable を次のように作成しました。

class TagMapping
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\ManyToOne(targetEntity="Tag", inversedBy="tags")
     */
    private $tag;

    /**
     * @ORM\ManyToOne(targetEntity="Feed", inversedBy="tags")
     */
    private $feed;

    /**
     * @ORM\ManyToOne(targetEntity="Question", inversedBy="tags")
     */
    private $question;
...
}

タグエンティティ:

class Tag
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="title", type="string", length=255, unique=true)
     */
    private $name;

    /**
     * @Gedmo\Slug(fields={"name"})
     * @ORM\Column(unique=true)
     */
    private $slug;

    /**
     * @ORM\OneToMany(targetEntity="TagMapping", mappedBy="tag", cascade="remove")
     */
    private $tags;

    ...
}

そして、他の両方のエンティティ(フィードと質問)で、このようにTagMappingエンティティを参照しました

...
/**
 * @ORM\ManyToMany(targetEntity="Tag")
 * @JoinTable(name="tag_mapping",
 *      joinColumns={@JoinColumn(name="feed_id", referencedColumnName="id")},
 *      inverseJoinColumns={@JoinColumn(name="tag_id", referencedColumnName="id")}
 * )
 */

 private $tags;  
...

私が直面している問題は、実行しようとするとエラーが表示されるため、有効な方法ではないということです。

php app/console doctrine:schema:update --force

tag_mapping テーブルが既に存在すると言っています。リレーションごとに1つではなく、1つのjoinTableのみを使用してそれを行う方法を知っていますか?

ありがとう。

4

0 に答える 0