php - 无法在实体 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
解决方案
您可以使用@ORM/JoinTable
注解指定连接表的名称:
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Artist", inversedBy="songs")
* @ORM\JoinTable(name="songs_collab_artists")
*/
private $collabArtists;
推荐阅读
- python - Python 音调随 Windows 变化
- pandas - Pandas:合并具有混合数据类型的列
- python - 将多行的输入存储到python中的列表中
- python - 将列转置为标题并附加一行
- python-3.x - 如何批量修复 PyCharm 检查警告,例如将所有“raise”语句转换为 Python 3 语法?
- linux - 导出包含在 defconfig 中的所有文件
- c++ - cpp 错误,未初始化的局部变量“MemoryInformation”?
- php - 使用 $_GET 时的“未定义索引”
- google-sheets - 谷歌表格查询选择列与选择计数列连接
- android - 如何解决 Godot 中的 checkDebugDuplicateClasses