2
/** @Entity */  
class First
{
    /** @OneToMany(targetEntity="Second", mappedBy="parent") */
    protected $secondList;

    // access methods here
    public function __construct()
    {
       $this->secondList = new ArrayCollection();
    } 
}

/** @Entity */
class Second 
{
    /** 
     * @ManyToOne(targetEntity="First", inversedBy="secondList")
     * @JoinColumn(name="First_id", referencedColumnName="Id")
     */
    protected $parent;
}

クラスArrayCollection $secondListから要素を取り込む際の問題は次のとおりです。ManyToOne 関係は正常に機能しています。おそらく、永続化の初期化で何か間違ったことをしたのでしょう ( SQL ベースでは常にそうであるため)。SecondSecondFirst_Idnull

$first = new Second();
$second = new First();
$first->getSecond()->add($second);
$em->persist($second);
$em->persist($first);

助言がありますか?

4

2 に答える 2

1

First クラスでは必ず括弧を閉じる必要があります。

/** @OneToMany(targetEntity =  "Second", mappedBy = "parent" ) */

それが問題でない場合 - エラー メッセージはありますか?

于 2012-09-23T06:35:43.560 に答える
1

Doctrine2 のドキュメントには次のように書かれています。

In the case of bi-directional associations you have to update the fields on both sides:

これは、次のようなことをしなければならないことを意味します。

$second->setParent($first); 

$second テーブルには外部キーがあるため。またはcascade={"persist"}、プロパティにオプションを追加することもでき$first->secondListます。

于 2012-09-23T07:13:13.793 に答える