簡體   English   中英

使用Doctrine 2保存OneToMany和ManyToMany關系的錯誤

[英]error saving OneToMany and ManyToMany relationship with Doctrine 2

我對“ Doctrine2”有疑問。 嘗試保存關系“ ManyToMany”或“ OneToOne”時,PHP會拋出異常錯誤! 我留下錯誤,以便您可以幫助我。

致命錯誤:未捕獲的異常'InvalidArgumentException'消息為'通過關系找到了一個新實體'實體\\用戶#特權'未配置為級聯持久存儲實體的操作:實體\\特權@ 0000000012feb12000000000616126d4。 顯式或持久化新實體設置級聯持久化關系上的操作。 如果您無法通過實現實體'Entities \\ Privilege#__toString()'來找出導致問題的原因,則可以獲取線索。 “在C:\\ Program Files \\ EasyPHP-5.3.4.0 \\ www \\ mframework_2 \\ phpinc \\ Doctrine \\ ORM \\ UnitOfWork.php上的第576行

我用來保持這種關系的代碼是:

$user = new \Entities\User();
            $user->setActive(true);
            $user->setUsername('xxx');
            $user->setPassword('xxx');

    $email = new \Entities\Email();
            $email->setEmail(xxx');
            $email->setType('xxx');

    $user->addEmail($email);

    $this->em->persist($user);
            $this->em->flush();

在Entitie用戶中,我有以下內容:

/** @OneToOne(targetEntity="Privilege") */
    protected $privilege;

我與ManyToMany關系有同樣的問題!

非常感謝你!

在您的特權字段中添加cascade = {“ persist”}:

/** @OneToOne(cascade={"persist"}, targetEntity="Privilege") */
protected $privilege;

執行以下操作之一:

1-對用戶和電子郵件對象都使用持久化

$this->em->persist($user);
$this->em->persist($email);
$this->em->flush();

要么

2-將級聯添加到您的實體

/** @OneToOne(targetEntity="Privilege", cascade={"persist"}) */

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM