学说 - 不允许一对一的双向关系

时间:2013-05-15 10:59:31

标签: mysql hibernate database-design doctrine-orm doctrine

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

0 个答案:

没有答案