Symfony 实体不保存到持久化数据库

Posted

技术标签:

【中文标题】Symfony 实体不保存到持久化数据库【英文标题】:Symfony Entity Not Saving to the Database on Persist 【发布时间】:2016-05-12 08:45:25 【问题描述】:

这适用于控制器,但在注入命令时不起作用。

public function execute(InputInterface $input, OutputInterface $output)

    $em = $this->getDoctrine()->getManager();

    try 
        $task = new Task();
        $task->setSubject("Test subject");
        $task->setCreatedAt(new \DateTime());

        $em->persist($task);
        $em->flush();
     catch (\Exception $e) 
        throw $e; //no error
    
    //prints successful here


/**
 * @param string $entityName
 * @return \Doctrine\Common\Persistence\ObjectRepository
 */
protected function getRepository($entityName)

    return $this->getDoctrine()->getRepository($entityName);


protected function getDoctrine()

    return $this->getContainer()->get('doctrine');

cron 成功地将其拾取直到结束,但它不会抛出任何错误或保存实体。

【问题讨论】:

实体的配置是怎么做的? 你检查过日志吗?它是否说实体确实是持久的? 命令不是控制器。没有 getDoctrine 方法。从 cron 外部运行命令以查看错误消息。然后查看文档以了解如何从容器中获取学说实体管理器。 我看到您更新了问题以显示 getDoctrine 方法。它现在有效吗?您是否从 cron 外部尝试过? 嘿@Cerad。是的,这没有任何错误。除了它不保存所述实体。进一步挖掘。 【参考方案1】:

检查数据库,它可以保存,但如果'status_id'为空,它将不会显示在任何地方

【讨论】:

以上是关于Symfony 实体不保存到持久化数据库的主要内容,如果未能解决你的问题,请参考以下文章

Symfony 2 - 无法使用集合保存表单

如何使用symfony获取Doctrine实体持久集合数据值

更改后,Symfony 实体不会在数据库中更新

Symfony 5 easyadmin 3 与 ManyToOne 关系的实体 - 不保存在“多”端

Symfony2 和 MSSQL Server 持久化日期

Symfony 3 ORM 在持久化后创建新的实体记录