DB に複合キーを持つテーブルがいくつかあります。下の図を参照してください。
この例でわかるようにinterest
、 とklists
は独自のものですが、キーとしてid
も持っています。kuser
Doctrine のドキュメントによると、複合キーのほぼすべてのユースケースをサポートしていますが、複合キーを持つすべてのエンティティは「ASSIGNED」以外の ID ジェネレーターを使用できません。つまり、EntityManager#persist($entity) を呼び出す前に、ID フィールドの値を設定する必要があります。これらのテーブルに関連するエンティティを定義しようとすると、Doctrine がこれを許可していないため、エラーが発生しました。
/**
* @ORM\Id
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="UserBundle\Entity\User", inversedBy="users" )
* @ORM\JoinColumn(name="kuser", referencedColumnName="id")
*/
protected $kuser;
ライフサイクルコールバックを使用していくつかのコードを実行できることは知っていますが、方法や場所がわからないので、ここで助けが必要です。誰か教えてくれたり、正しいパスを教えてくれますか?