我正在尝试手动将外键ID设置为对象,但未找到如何操作
class Item
{
/**
* @ORM\ManyToOne(targetEntity="MyBundle\Entity\ItemType", inversedBy="itemTypes")
* @ORM\JoinColumn(name="type_id", referencedColumnName="id")
*/
protected $item_type;
}
有没有办法做某事链接?
$item = new Item();
$item->setItemTypeId(1); // This generate an error.
或者我必须这样做?
$item = new Item();
$type = Repository::RetrieveById(1);
$item->setItemType($type); // This generate an error.
答案 0 :(得分:3)
这可以使用Reference Proxies来完成,它允许您获取对已知标识符的实体的引用,而无需从数据库中加载该实体。
$type = $em->getReference('MyBundle\Entity\ItemType', 1);
$item->setItemType($type);
答案 1 :(得分:0)
首先(您是否在ItemType类中定义了关系?):
inversedBy="item"
所以第二:
Repository::RetrieveById(1); // Not valid code for the repository methods
将其替换为:
$type = $this->getDoctrine()->getRepository('ACMEBundle:ItemType')->find(1);
第二种用法将接近文档。