Удалить Доктрину Отношений - PullRequest
4 голосов
/ 26 апреля 2011

В простейшем случае у меня есть класс пользователя и категории, пользователь может принадлежать нескольким категориям, определенным как таковые

 class Application_Model_User {

    public function __construct() {
        $this->userCategory = new ArrayCollection();
    }
 /**
 * Unidirectional - Users have multiple categories they belong to
 *
 * @ManyToMany(targetEntity="Application_Model_Category")
 * @JoinTable(name="user_category",
 *   joinColumns={@JoinColumn(name="user", referencedColumnName="id")},
 *   inverseJoinColumns={@JoinColumn(name="category", referencedColumnName="id")}
 * )
 */
}
    private $userCategory;

    public function getUserCategories() {
       return $this->userCategory;
  }
 }

Добавление категории для пользователя легко, но я не могу понять или увидетьиз документа, как я бы удалил определенную связь ... Например, если бы я сделал

    $thing = $em->getRepository('Application_Model_User');


$result = $thing->findOneBy(array(
  'id' => (int) 5
));
foreach($result->getUserCategories() as $category) {
    if($category->getName() == 'Another Sub Cat') {
        // Delete this relationship
    }               
}
$em->flush();

, я мог бы удалить связь, если я удаляю сущность с помощью удаления, вся категория удаляется?

1 Ответ

6 голосов
/ 26 апреля 2011

Вы должны проверить Работа с ассоциациями из справочного руководства.Это объясняет это.

<?php

class Application_Entity_User
{

            // ... snipped for brevity

    public function deleteCategory(Application_Entity_Category $category)
    {
        $this->userCategories->removeElement($category);
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...