9

我有这样的对象数组集合

Class User
{
    private $tasks;
}

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

当我查询用户时,Doctrine 将延迟加载用户对象中的任务,但我想先清除这些任务

就像是

$user->getTasks().empty()

4

1 回答 1

22

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

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

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

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

https://www.doctrine-project.org/api/collections/latest/Doctrine/Common/Collections/ArrayCollection.html

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

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

也就是说,向 User 类添加一个新方法应该可以工作:

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

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

$user->clearTasks();

(并且不要忘记持久化到数据库!)

于 2012-08-10T05:33:47.387 回答