我在使用doctrine存储php序列化对象时遇到了一些问题,当我使用以下代码存储时:
$item = new \Company\MyBundle\Entity\Frontend\table();
$item->setData(serialize($myPhpObject));
$this->_em->persist($item);
$this->_em->flush();
在另一个例子中:
$item = $this->_em->getRepository('MyBundle:frontend\table')->findOneById(...);
echo $item->getData(); // display only a part of the serialized object
我找到了一个解决办法,但我想有更好的事情要做:
$item->setData(json_encode(serialize($myPhpObject)));
当我使用它时,所有序列化的字符串都被存储,我可以正确地反序列化它。你知不知道哪里出了问题?
- 编辑-
这将是从列数据设置的示例:
data:
type: string
length: null
fixed: false
nullable: true
column: data
2条答案
按热度按时间pqwbnv8z1#
我假设您正在使用注解作为您的原则配置。然后在你的实体中你可以使用
object
类型:然后在你的控制器中,没有必要序列化/反序列化对象,原则将处理:
祝你好运!
ssm49v7z2#
使用
ArrayType
(a.k.a.array
(在实体注解中)或ObjectType
(也称为由于此问题(https://github.com/doctrine/dbal/issues/3289),Doctrine类型的实体注解中的object
)可能存在一些潜在的安全问题(导致拒绝服务)我自己会使用JsonObjectType。