は、余分なフィールド
であなたは、エンティティ間の関係をしなければならない、との教義は、それらを管理、関係が多対多で、コメントを参照してください。 あなたは教義に言います、私はユーザーとユーザーの間の関係が欲しいです。 Doctrineは右のフィールドで結合列を管理していますが、デフォルトの値はほとんどの場合、このアノテーションは削除できます: @ORM \ JoinColumn(name = "user_id"、referencedColumnName = "id")
これを試してください:
User.php
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*
*/
private $id;
/*
*@ORM\OneToMany(targetEntity="UserLicense", mappedBy="user")
*/
private $userLicence;
License.php
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*
*/
private $id;
/*
* @ORM\OneToMany(targetEntity="UserLicense", mappedBy="license")
*/
private $userLicence;
UserLicense.php
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="userLicence")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
private $user;
/**
* @ORM\ManyToOne(targetEntity="License", inversedBy="userLicence")
* @ORM\JoinColumn(name="license_id", referencedColumnName="id")
*/
private $license;
- コメントの前にまず答え---
私はあなたが何をしたいのかを正しく理解していれば、あなただけのセットアップにユーザーとライセンスの関係を持っています。
Doctrineは、関係を処理するために必要なデータベーステーブルを管理します。 あなたはそれについて心配する必要はありません。
ユーザーが多くのライセンスを持つことができ、ライセンスは多くのユーザーが所有することができ、あなたがこれを行うことができます:
User.php
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*
*/
private $id;
/*
* @ORM\ManyToMany(targetEntity="License", mappedBy="user")
*/
private $licence;
Lincence.php
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/*
* @ORM\ManyToMany(targetEntity="User", ReversedBy="license")
*
*/
private $user;
プライベート$ユーザー;
$ licenseと$ userのセッターとゲッターを追加する必要があります。ユーザーにライセンスを追加すると、Doctrineはその関連付けを行います。あなたは()をフラッシュする必要があり、後
$licence = new Licence();
$user->addLicence($licence);
よう
何か。
これは単なるコード例ですが、実装方法は作業内容によって異なります。
いくつかの良いリソース:この1つは多対多関係を理解するのに最適です https://knpuniversity.com/screencast/symfony2-ep3/many-to-many-relationship
必読: http://doctrine-orm.readthedocs.io/en/latest/reference/association-mapping.html
をあなたは持っているしたい場合は、教義能力が=「EAGER」フェッチを参照する必要がありますいくつかのケースでは関連するエンティティ、そしてArrayCollectionについて読む
関係は多岐にわたる。ユーザーは多数のライセンスを所有でき、1つのライセンスは多数のユーザーに関連付けることができます。 –
私はmanyToManyのために変更しますが、ポイントは次のとおりです:let Doctrineはリレーションを管理します。データベースではなくORMで考える必要があります。 'UserLicence'に追加のフィールドがない限り、ニコラス@ – Nicolas
です。 –