在console命令中保存/更新实体

时间:2016-07-18 18:19:56

标签: symfony

我正在构建CLI应用程序,并且正在尝试保存名为Config的实体。这是我创建的命令的execute()逻辑:

$name  = $input->getArgument('name');
$value = $input->getArgument('value');
$output->writeln(sprintf('Setting <info>%s</info> to <info>%s</info>...', $name, $value));
$config = new Config;
$config
    ->setName($name)
    ->setValue($value)
;
$em = $this->getDoctrine()->getManager();
$em->persist($config);
$em->flush();
$output->writeln('Success');

问题是http://www因此$this->getDoctrine()未定义。

如何在ContainerAwareCommand内部保存实体?

1 个答案:

答案 0 :(得分:1)

要获取实体管理器,您可以使用

$em = $this->getContainer()->get('doctrine')->getManager();

所以

$config = new Config;
$config
    ->setName($name)
    ->setValue($value)
;
$em = $this->getContainer()->get('doctrine')->getManager();
$em->persist($config);
$em->flush();