Doctrine映射问题 - 在null上调用成员函数setValue()

Tor*_*ben 2 php doctrine symfony doctrine-orm

我对Doctrine有一个奇怪的问题.我已经设置了以下结构:

/**
 * @ORM\Entity
 * @ORM\Table(name="fp_credit_returned_product")
 */
class ReturnedProduct {
...
    /**
     * @var FpCredit\Models\Credit\ReturnedProductDetail
     * @ORM\OneToMany(targetEntity="\FpCredit\Models\Credit\ReturnedProductDetail", mappedBy="returned_product", cascade={"persist"})
     */
    private $details;

public function getDetails() {
    return $this->details;
}

public function setDetails($details) {
    $this->details = $details;
}   
Run Code Online (Sandbox Code Playgroud)

和:

/**
 * @ORM\Entity
 * @ORM\Table(name="fp_credit_returned_product_detail")
 */
class ReturnedProductDetail {

     /**
     * @var FpCredit\Models\Credit\ReturnedProduct
     * @ORM\ManyToOne(targetEntity="\FpCredit\Models\Credit\ReturnedProduct")
     * @ORM\JoinColumn(name="returned_product_id", nullable=false, referencedColumnName="id")
     */
    private $returnedProduct;

    public function getReturnedProduct() {
        return $this->returnedProduct;
    }

    public function setReturnedProduct($returnedProduct) {
        $this->returnedProduct = $returnedProduct;
    }
Run Code Online (Sandbox Code Playgroud)

然后我查询所有的returnProducts并执行以下操作:

foreach ($errorLogs as $eLog) {
    $errorDetails = $eLog->getDetails();
    if ($errorDetails) {
        foreach ($errorDetails as $errorDetail) {

            $errorArticle = $errorDetail->getArticle();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

因为$errorDetail->getArticle()我得到这个错误:

PHP Fatal error:  Call to a member function setValue() on null in /var/www/html/vendor/doctrine/orm/lib/Doctrine/ORM/PersistentCollection.php
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么会出现这个错误以及如何修复它?我的映射有问题吗?一个ReturnedProducts有几个ReturnProductDetails.

谢谢你的帮助!

fxl*_*oix 6

你可以在你的班级中试用ReturnedProduct吗?

mappedBy="returnedProduct" 
Run Code Online (Sandbox Code Playgroud)

问候.

  • 现在它可以工作了,因此mapedBy需要变量名而不是列名。 (2认同)