[英]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.