在两个实体之间创建关联时,是否可以传递id而不是实体?

时间:2012-01-28 22:45:10

标签: php orm doctrine-orm

我有一个Item实体和一个Category实体。 Item只有一个Category。我的映射代码如下所示:

// Item.php
/**
 * @ORM\ManyToOne(targetEntity = "Category")
 * @ORM\JoinColumn(name = "category_id", referencedColumnName = "id")
 */
protected $category;

要创建关联,我使用此方法:

// Item.php
public function setCategory(Category $category) {
  $this->category = $category;
}

只要我第一次从数据库中获取Category实体,这就可以正常工作。但我想知道是否可以传递id而不是Category实体。我想用标量值手动设置JoinColumn category_id。但正弦category_id不是Item的实际成员,我不知道如何做到这一点。

1 个答案:

答案 0 :(得分:2)

使用getReference

$item->setCategory($em->getReference('Category', $id));