从命令集 'open' 状态创建任务

Create Task from Command set 'open' status

我想在自定义 Bundle 中通过 Command 创建一个新任务。但是在设置任务状态时遇到麻烦。我从 Backend developer's guide 中取出夹具并将其调整为 Command

 $task = new Task();
 $task->setSubject('Important task');
 $task->setDescription('This is an important task');
 $defaultPriority = $this->doctrine->getRepository(TaskPriority::class)->find('normal');
    if ($defaultPriority) {
        $task->setTaskPriority($defaultPriority);
    }     
 $task->setOwner($taskDataArray['user']);
 $task->setOrganization($this->getOrganization());
 $this->getEntityManager(Task::class)->persist($task);
 $this->getEntityManager(Task::class)->flush();

数据库记录已创建,但默认status_id字段为空。 没有状态,它不会显示在数据网格中。 状态的类型为 AbstractEnumValue。设置状态的方法在模型中定义为 * @method Task setStatus(AbstractEnumValue $status)

CRUD操作中如何正确设置状态?

先谢谢了。

Status 是一个枚举字段。 内部枚举是具有自动生成 class 名称的实体。 要使用枚举实体,首先,您必须生成它的名称,然后您可以使用学说访问它,作为一个常规实体。

// generate enum entity class name by the enum code
$statusClass = ExtendHelper::buildEnumValueClassName('task_status');

// find existing status entity
$statusOpen = $this->doctrine->find($statusClass, 'open');

// assign status to the task
$task->setStatus($statusOpen);

请参阅 OroEntityExtendBundle documentation 中的参考资料。