Есть ли способ использовать имя справочного столбца в доктрине 2? - PullRequest
4 голосов
/ 30 марта 2011

Мне нужно присвоить значение (ранее созданный entites Id) для ссылки на столбец в модели доктрины 2, например

/**
 * @Entity @Table(name="products")
 */
class product {

    /**
    * 
    * @ManyToOne(targetEntity="category")
    */
    protected $category;

    public function assignCategoryId($id) {
        $this->category_id=$id;
    }


}

Я предполагаю, что category_id создан доктриной 2 в качестве имени столбца ссылки, Не спрашивайте, почему я хочу назначить идентификатор, а не сам объект, потому что так должно быть. Есть ли способ сделать это ? Есть идеи?

Ответы [ 2 ]

3 голосов
/ 30 марта 2011

Хотя ответ @ Orbling верен, вам на самом деле не нужно загружать объект из базы данных. Вместо этого вы можете использовать ссылку:

// method on Product entity
public function setCategory(Category $category)
{
    $this->category = $category;
}

// then set the category on the product
$product->setCategory($entityManager->getReference('category', $categoryId));

Документацию можно найти здесь .

0 голосов
/ 30 марта 2011

Чтобы сделать это, вы должны создать сущность category и присвоить ее свойству отношений.

$category = $entityManager->find('category', $categoryID);

$product = new product();
$product->category = $category;

Я думаю, это создаст отношения.

...