データベースのデザインを 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 (プレイヤー) の関係です。