我今年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
答案 0 :(得分:0)
Symfony2.7的Symfony文档在updating an Object上声明以下内容:
请注意,不需要调用$ entityManager-> persist($ product)。回想一下,此方法只是告诉Doctrine管理或“监视” $ product对象。在这种情况下,由于您是从Doctrine中获取$ product对象的,因此已经对其进行了管理。
虽然不是必需的,但请尝试先保留该对象然后再刷新,以解决此问题。