在最简单的情况下,我有一个 User 和 Category 类,一个 User 可以属于多个类别,定义如下
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();
我将能够删除关系,如果我使用 remove 删除实体,整个类别会被删除吗?
最佳答案
您应该查看 Working with Associations从引用指南。它解释了这一点。
<?php
class Application_Entity_User
{
// ... snipped for brevity
public function deleteCategory(Application_Entity_Category $category)
{
$this->userCategories->removeElement($category);
}
}
关于doctrine-orm - 删除关系原则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5788899/