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

use*_*r17 6 php symfony doctrine-orm

我有像这样的Array对象集合

Class User
{
private $tasks
}
Run Code Online (Sandbox Code Playgroud)

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

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

就像是

$user->getTasks().empty()

Tho*_*ley 20

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

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

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

请注意,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();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

$user->clearTasks();
Run Code Online (Sandbox Code Playgroud)

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