如何在doctrine symfony中清除或清空Array Collection

时间:2012-08-10 04:34:27

标签: php symfony doctrine-orm

我有像这样的对象的Array集合

Class User
{
private $tasks
}

一旦用户从数据库加载,我如何清空或清除集合。

当我查询用户然后doctrine将延迟加载用户对象中的任务但我想先清除那些任务

类似

$user->getTasks().empty()

1 个答案:

答案 0 :(得分:19)

首先,我想你的User实体的构造函数看起来像这样:

class User
{
    public function __construct()
    {
        ...
        $this->tasks = new \Doctrine\Common\Collections\ArrayCollection();
        ...
    }
}

如果到目前为止这不正确,请停止阅读,并在评论中纠正我:)

请注意,ArrayCollection类是由Doctrine创建的。 Symfony及其大部分组件都非常适合记录类。当你查找该课程时,你会发现:

http://www.doctrine-project.org/api/common/2.2/class-Doctrine.Common.Collections.ArrayCollection.html

(当然,请确保您使用的是同一版本;否则,请尝试查找适合您版本的文档)

该文档列出了ArrayCollection对象可用的所有方法。其中包括:clear()

也就是说,向User类添加一个新方法应该有效:

class User
{
    public function clearTasks()
    {
        $this->getTasks()->clear();
    }
}

然后,在User对象上,只需调用:

$user->clearTasks();

(不要忘记坚持到数据库!)