doctrine-orm - 删除关系原则

标签 doctrine-orm

在最简单的情况下,我有一个 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/

相关文章:

php - IN() 条件中的大量占位符会减慢 PDO/Doctrine 的停止速度

mysql - Symfony2 Doctrine 错误 : Cannot count query that uses a HAVING clause. 使用输出 walkers 进行分页

php - 学说-SQLSTATE [42S22] : Column not found: 1054 Unknown column

symfony - 关系一对一级联 ="persist, remove"不起作用

symfony - FosRestBundle 不允许使用方法

doctrine-orm - 如何在 preUpdate 事件监听器中更改字段的值?

symfony - 新数据库设置中的学说迁移

symfony - Doctrine2 - 使用 ORM QueryBuilder 连接没有关联的实体

symfony - 教义查询崩溃

doctrine-orm - ZF2 的 Doctrine 生产缓存