3

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

2 回答 2

7

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

$type = $em->getReference('MyBundle\Entity\ItemType', 1);
$item->setItemType($type);
于 2016-08-11T19:27:36.583 回答
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. 第二种用法将接近文档。

于 2012-07-18T11:09:42.143 回答