如何设置外键id#sf2#doctrine2的id

时间:2012-07-18 10:58:58

标签: php symfony doctrine-orm foreign-keys

我正在尝试手动将外键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.

2 个答案:

答案 0 :(得分:3)

这可以使用Reference Proxies来完成,它允许您获取对已知标识符的实体的引用,而无需从数据库中加载该实体。

$type = $em->getReference('MyBundle\Entity\ItemType', 1);
$item->setItemType($type);

答案 1 :(得分:0)

  1. 首先(您是否在ItemType类中定义了关系?):

    inversedBy="item"
    
  2. 所以第二:

    Repository::RetrieveById(1); // Not valid code for the repository methods
    
  3. 将其替换为:

    $type = $this->getDoctrine()->getRepository('ACMEBundle:ItemType')->find(1);
    
  4. 第二种用法将接近文档。