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 の一部です。

私の意見では、これは 1 対 1 の双方向の関係です。

関連するエンティティコードは次のとおりです。

<?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) 対 1 (プレイヤー) の関係です。

4

0 に答える 0