4

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

4

0 回答 0