更新01.09.2016私のプロジェクトを更新しました:私は自分のエンティティでカスタムJoinColumnを取り除きました(今は生成され、プロジェクトはw/oエラーで動作します)。そして、私は質問短縮に決めた:カスタムJoinColumn名前を持つDoctrineのManyToOne ORM結合
symfony 2.7、教義2.7とManyToOne単方向関連してカスタムという名前のJoinColumnを使用することをお勧めしますか?
私のケースだった。(多くのIPアドレスを保持している)
多くipGroup実体はワンipGroupPrametersエンティティに関連付けされなければなりません。
1):私は3つの亜種( 'ワークフロー' を参照)内のコードを実行しようと、さまざまなエラーを取得しています
(以下のコードを参照してください)。エラー、だけipGroupParamsを充填 DBテーブル、およびはipGroupににテーブルを任意の行を挿入しません。
2)。 "お知らせ:未定義のインデックス:ipGroupId" ベンダー/ドクトリン/ ORM/libに/ドクトリンで/ ORM /存続/ BasicEntityPersister.phpラインで685
$value = $newValId[$targetClass->fieldNames[$targetColumn]];
本当に奇妙である - $ targetClass は ipGroupIdでを持っていますfieldNames(デバッガが示すように);
3)。 (この変形例では、がの関係にあります)DBAL例外:INSERT INTO ipGroup(ipGroupId、ip)VALUES(?、?)をparams [null、 "134.17]で実行中に例外が発生しました。 26.129 "] ipGroupIdをnullにすることはできません。 $ gObjにsetIpGroupIdメソッドを適用するので、これは魔法です。これはRAMで更新されます(デバッガで表示されます)。
ワークフローは次のとおりです。
public function createIpGroup()
{
$this->createParamsObj();
$gObj = new \Bmw\StatBundle\Entity\ipGroup();
$gObj->setIpGroupId($this->groupId);
$gObj->setIp($ip);
### 1 variant
$gObj->setIpGroupParams($this->paramsObj);
### 2 variant
$gObj->setIpGroupParams($this->paramsObj);
$this->em->persist($gObj); // if not rely on cascade persist
### 3 variant
$this->paramsObj->addIpGroup($gObj);
$this->em->persist($this->paramsObj);
###
$this->em->flush();
}
public function createParamsObj()
{
$pObj = new \Bmw\StatBundle\Entity\ipGroupParams();
$this->groupId = $this->container->get('my.id.generator')->generate();
$pObj->setIpGroupId($this->groupId);
$this->em->persist($pObj);
$this->em->flush();
$this->paramsObj = $pObj;
}
ここ
がエンティティコード初期である、 - 私はドキュメントを実行します。GEN:
/**
* ipGroup
*
* @ORM\Table(
* uniqueConstraints={
* @UniqueConstraint(name="ip", columns={"ip"}),
* @UniqueConstraint(name="userId", columns={"userId"}),
* },
* indexes={@Index(name="ipGroupId", columns={"ipGroupId"})},
*)
* @ORM\Entity
*/
class ipGroup
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var integer
*
* @ORM\Column(name="ipGroupId", type="integer")
*/
private $ipGroupId;
/**
* @ORM\ManyToOne(targetEntity="ipGroupParams", inversedBy="ipGroup")
* @ORM\JoinColumn(name="ipGroupId", referencedColumnName="ipGroupId")
*/
private $ipGroupParams;
/**
* @var string
*
* @ORM\Column(name="ip", type="string", length=45, nullable=true)
*/
private $ip;
}
:エンティティが自動的にゲッターとセッターを作成します
/**
* ipGroupParams
*
* @ORM\Table(
* uniqueConstraints={
* @UniqueConstraint(name="ipGroupId", columns={"ipGroupId"}),
* }
*)
* @ORM\Entity
* @ORM\HasLifecycleCallbacks()
*/
class ipGroupParams
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\OneToMany(targetEntity="ipGroup", mappedBy="ipGroupParams", cascade={"persist", "remove"}, orphanRemoval=TRUE)
*/
private $ipGroup;
/**
* @var integer
*
* @ORM\Column(name="ipGroupId", type="integer")
*/
private $ipGroupId;
}
Dhumb質問:エンティティのセッターとゲッターを生成しましたか? –
よろしく、@GeraldChablowski、getters/setters生成コード[link](https://docs.google.com/document/d/1c1V34ekmPbYfDGNAFfRgNVb8Tpvalmo3_dwpNO67NDI/edit?usp=sharing) – Parks