Создать задачу из набора команд «открытый» статус - PullRequest
0 голосов
/ 05 марта 2020

Я хочу создать новое задание из команды в пользовательском пакете. Но возникают проблемы с установкой статуса задачи. Я взял прибор из Руководства разработчика бэкенда и адаптировал его к 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?

Спасибо, вперед.

1 Ответ

0 голосов
/ 10 марта 2020

Статус - это поле перечисления. Внутренне перечисления являются сущностями с автоматически сгенерированными именами классов. Для работы с сущностью enum сначала необходимо сгенерировать ее имя, затем вы можете получить к нему доступ, используя doctrine как обычную сущность.

// 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. .

...