无法更新Symfony 2.3中的新数据库字段

时间:2019-03-24 07:29:06

标签: php symfony orm doctrine

我今年3天才参加Symfony php项目。我无法保存新创建的数据库字段。我需要在某些已经检测到的条件下保存字符串“收据”或“发票”。我的代码如下:

class ReceiptPage
{

....

    /**
     * @var string
     * @ORM\Column(name="analyzed_invoice_number", type="string", length=80, nullable=true)
     */
    private $analyzedInvoiceNumber;

设置者和获取者:

    /**
     * @return string
     */
    public function getAnalyzedInvoiceNumber()
    {
        return $this->analyzedInvoiceNumber;
    }

    /**
     * @param string $analyzedInvoiceNumber
     */
    public function setAnalyzedInvoiceNumber($analyzedInvoiceNumber)
    {
        $this->analyzedInvoiceNumber = $analyzedInvoiceNumber;
    }

即使我在$em->flush();之前强行设置了该属性,也未保存该属性。

我这样保存属性:

$receiptPage->setStatus(ReceiptPage::STATUS_FINISHED); // this is working
$receiptPage->setAnalyzedInvoiceNumber('receipt'); // this is not working
$em->flush();

Doctrine ORM 有什么联系吗?如果我强行将值设置为现有属性,则它可以工作,但是不会保存新属性。 db列为 analyzed_invoice_number

我在一些博客上尝试了很多,但是失败了。 有人可以帮忙吗?该项目还使用 Redis 弹性搜索 TIA

1 个答案:

答案 0 :(得分:0)

Symfony2.7的Symfony文档在updating an Object上声明以下内容:

  

请注意,不需要调用$ entityManager-> persist($ product)。回想一下,此方法只是告诉Doctrine管理或“监视” $ product对象。在这种情况下,由于您是从Doctrine中获取$ product对象的,因此已经对其进行了管理。

虽然不是必需的,但请尝试先保留该对象然后再刷新,以解决此问题。