我试图手动为对象设置外键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.
这可以使用引用代理来完成,通过引用代理可以获得对已知标识符的实体的引用,而无需从数据库加载该实体。
$type = $em->getReference('MyBundle'Entity'ItemType', 1);
$item->setItemType($type);
-
首先(您在ItemType类中定义了关系吗?):
inversedBy="item"
-
第二:
Repository::RetrieveById(1); // Not valid code for the repository methods
-
替换为:
$type = $this->getDoctrine()->getRepository('ACMEBundle:ItemType')->find(1);
-
第二种用法将接近文档。