簡體   English   中英

教義2關系不起作用

[英]Doctrine 2 relationship is not working

我有Item實體:

/**
 * Item
 *
 * @ORM\Table(name="item")
 * @ORM\Entity
 */
class Item {
...
    /**
     * @var Unit
     * @ORM\Column(name="unitId", type="integer")
     * @ORM\ManyToOne(targetEntity="Unit", inversedBy="items")
     * @ORM\JoinColumn(name="unitId", referencedColumnName="id")
     */
    private $unit;
...
}

和單位實體:

/**
 * Unit
 *
 * @ORM\Table(name="unit")
 * @ORM\Entity
 */
class Unit {
...
    /**
     * @var Item[]
     * @ORM\OneToMany(targetEntity="Item", mappedBy="unit")
     */
    private $items;
...
}

和類似的代碼:

$item = $this->objectManager->getRepository('Application\Main\Entity\Item')->find($id);
$unitName = $item->getUnit()->getName();

產生錯誤Fatal error: Call to a member function getName() on a non-object ,這意味着該學說將該字段作為簡單字段而不是關系字段來處理。 我該怎么做才能強迫教義將此字段用作關系? 我遇到這種問題的實體很少,而其他實體的效果很好。 是什么原因?

vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/Driver/AnnotationDrive.php ,第262-263行:

// Field can only be annotated with one of:
// @Column, @OneToOne, @OneToMany, @ManyToOne, @ManyToMany

因此,似乎在使用@Column時不能使用關系注釋,反之亦然。 我必須刪除@Column注釋並添加@JoinColumn注釋,它開始按預期方式工作。

暫無
暫無

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

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