Я пытаюсь смешать ODM (MongoDB) и ORM в моем Symfony 2.6 со ссылкой на Документации "Blending ORM and MongoDB ODM"Reference ORM (Entity) от ODM (Документ, MongoDB) с ManyToMany отношений
У меня есть две сущности, User
и Category
. Также у меня есть один документ Product
.
Это ясно, когда смешивание ODM и ОРМ, он может быть легко решена с OneToMany или ManyToOne случае - с одной стороны, мы определяем ReferenceOne ссылку + как field
identifier="fieldId"
и задав сам fieldId
, на другой стороне мы определяем ReferenceMany).
Мой вызов получает $product->categories
населенный с отношением ManyToMany. До сих пор $product->user
извлекается нормально, когда заполняется $product->userId
. Но я не могу добиться такого же результата с $product->categories
.
Помогите найти решение проблемы?
/**
* @ORM\Entity
* @ORM\Table(name="users")
*/
class User
{
/**
* @var ArrayCollection $products
*
* @Gedmo\ReferenceMany(type="document", class="Document\Product", mappedBy="user")
*/
protected $products;
}
/**
* @Gedmo\Tree(type="nested")
* @ORM\Entity
* @ORM\Table(name="categories")
*/
class Category
{
/**
* @var ArrayCollection $products
*
* @Gedmo\ReferenceMany(type="document", class="Document\Product", mappedBy="products")
*/
protected $products;
}
, а затем у меня есть документ
/**
* @MongoDB\Document
* @MongoDB\HasLifecycleCallbacks
*/
class Product
{
/**
* @Gedmo\ReferenceOne(type="entity", class="Entity\User", inversedBy="products", identifier="userId")
*/
protected $user;
/**
* @MongoDB\Field(name="user_id", type="int")
*/
protected $userId;
/**
* @Gedmo\ReferenceMany(type="entity", class="Entity\Category", mappedBy="products")
*/
protected $categories = array();
/**
* @MongoDB\Collection
*/
protected $categoryIds = array();
public function getUser()
{
return $this->user;
}
public function getCategories()
{
return $this->categories;
}
}
P.S> слушателей gedmo.listener.reference
и utils.listener.reference
действительно существуют.
До сих пор мне приходилось вводить пользовательское решение с загрузкой категорий, используя массив категорий категорий, который хранится в документах. То же самое для сохранения, я обновляю массив Ids на PrePersist. Но все еще ищет элегантное решение. –