我在使用serialize() php
命令收到的数据污染定义为文本字段的mySQL字段时遇到问题。我将symfony2
与doctrine annotations
一起使用。
我的服务代码:
$oe = serialize($object);
$log->setObject(serialize($object));
和实体:
/**
* @ORM\Column(type="text")
*/
protected $object;
我得到的错误如下:
Symfony
Search on Symfony website
Exception detected!
Catchable Fatal Error: Argument 1 passed to AppBundle\Entity\Log::setObject() must be an instance of longtext, string given, called in C:\wamp\www\symfony_learn\src\AppBundle\Service\loggerService.php on line 22 and defined
500 Internal Server Error - ContextErrorException
似乎数据类型不匹配,但我不太了解它,因为一种数据类型是字符串,第二种是文本,因此我认为转换应该自动进行。我知道我可以使用mySQL强制转换,但我想知道symfony2
和doctrine2
提供了处理这种情况的工具吗?
答案 0 :(得分:1)
尝试使用mySql CAST:
CAST(yourVarchar as LONGTEXT)
答案 1 :(得分:0)
我发现使用:
2.5.4
导致:
php app/console doctrine:generate:entity
从 public function setObject(\longtext $object)
{
$this->object = $object;
return $this;
}
删除\longtext
解决了我的问题。
另外,我已根据http://doctrine-orm.readthedocs.org/en/latest/reference/basic-mapping.html
的建议将我的字段类型更改为“对象”