0

我想在自定义 Bundle 中从 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 操作中正确设置状态?

提前谢谢。

4

1 回答 1

0

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

// 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 文档中的参考资料。

于 2020-03-10T12:45:28.570 回答