我在将我的数据库设计转移到 Doctrine 时遇到问题。
首先是一些细节:
我从 xml 文件中获取了许多与足球相关的数据,并且必须将其保存在我自己的数据库中。
这些数据的一部分是球员和球员统计数据。
这是我的表:
table: player
id | varchar | PK
team_id | int
...and many more...
table: player_statistic
player_id | varchar | PK
season_id | smallint | PK
competition_id | smallint | PK
...and many more...
所以 player.id 是来自 player_statistic 的复合 PK 的一部分。
在我看来,这是一对一的双向关系。
这是相关的实体代码:
<?php
/**
* @Entity
* @Table(name="player")
*/
class Player
{
/**
* @Id
* @OneToOne(targetEntity="PlayerStatistic", mappedBy="playerId")
*/
private $id;
/* ... */
}
?>
<?php
/**
* @Entity
* @Table(name="player_statistic")
*/
class PlayerStatistic
{
/**
* @Id
* @OneToOne(targetEntity="Player", inversedBy="id")
* @JoinColumn(name="player_id", referencedColumnName="id")
*/
private $playerId;
/* ... */
}
?>
CLI 命令:
php53 vendor/bin/doctrine orm:schema-tool:update --dump-sql
返回:“‘Player#id’中不允许有反向关联作为标识符。”
通常是不可能做到这一点,还是我做错了什么?
如果可能并且不是完全垃圾,我不想使用额外的 AI PK 字段。
感谢您提供任何帮助。
更新 对不起逻辑问题,这是一个多(player_statistic) - 对 - 一个(玩家)关系。