首页 > 解决方案 > 无法在实体 A 到 B 之间添加新的 ManyToMany 属性,因为我已经有一个包含这两个实体的 ManyToMany 属性

问题描述

所以基本上是标题。我正在构建一个音乐播放器,我希望我的歌曲有 2 个属性:艺术家和合作艺术家。

我有一个 Song 实体,它有一个“艺术家”关系 ManyToMany 属性,我可以将 1 个(或更多)艺术家实体链接到歌曲。我想拥有另一个与 Song 和 Artist 相关的 ManyToMany 属性“collab-artists”。

我可以php bin/console make:entity创建 collab-artist 属性,但是当php bin/console make:migration我得到:

在 SchemaException.php 第 112 行:名称为“banana.song_artist”的表已经存在。

似乎 symfony 正在尝试创建一个表来存储关系,但它已经被使用了。如何告诉它创建另一个名称不同的表?

谢谢,麦克森斯

编辑:我最终使用了这个解决方案https://stackoverflow.com/a/50344465/16267883

这爆炸了 3 个表之间的关系,Song > OneToMany > SongHasArtist > ManyToOne > Artist

标签: phpdatabasesymfonymany-to-many

解决方案


您可以使用@ORM/JoinTable注解指定连接表的名称:

/**
 * @ORM\ManyToMany(targetEntity="App\Entity\Artist", inversedBy="songs")
 * @ORM\JoinTable(name="songs_collab_artists")
 */
private $collabArtists;

推荐阅读