我有问题将我的数据库设计转移到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)到一个(玩家)的关系。