在我的symfony 3项目中,我有一个实体来记录更改。 为了保存更改,我使用了两个带有旧对象和新对象的序列化数组。
日志级:
/*
* @ORM\Column(name="oldData", type="blob", nullable=false)
*
* @Serializer\Expose
*/
private $oldData;
/**
* Set oldData
*
* @param $Data
*/
public function setOldData( $data )
{
$this->oldData = serialize( $data );
return $this;
}
我在另一个控制器中使用此类:
$log = new ChangeLog();
$log->setUser( $this->getUser() );
$log->setOfferBase( $ConditionSet->getOfferbaseId() );
$log->setOldData( $ConditionSet );
使用以下代码保存新对象后,在日志中保存新更改:
$log->setNewData( $ConditionSet );
$em->persist( $log );
$em->flush();
问题是数据没有保存在数据库中,我得到一个0字节的blob。我没有收到任何错误,但在我的日志中,我看到symfony没有尝试保存数据:
doctrine.DEBUG: INSERT INTO changeLog (changeDate, offerBase, user) VALUES (?, ?, ?) {"1":"2016-08-09 17:28:39","2":45,"3":1} []
我尝试了以下方法来捕获异常。但输出是#34;没有例外"。
try {
$em->persist( $log );
$em->flush();
$message = "No exception";
} catch (DBALException $e) {
$message = sprintf('DBALException [%i]: %s', $e->getCode(), $e->getMessage());
} catch (PDOException $e) {
$message = sprintf('PDOException [%i]: %s', $e->getCode(), $e->getMessage());
} catch (ORMException $e) {
$message = sprintf('ORMException [%i]: %s', $e->getCode(), $e->getMessage());
} catch (Exception $e) {
$message = sprintf('Exception [%i]: %s', $e->getCode(), $e->getMessage());
}
return new Response($message);