我有问题污染mySQL字段定义为文本字段与serialize() php
命令接收的数据的结果。我用symfony2
和doctrine annotations
。
我的服务代码:
$oe = serialize($object);
$log->setObject(serialize($object));
和实体:
/**
* @ORMColumn(type="text")
*/
protected $object;
我得到的错误如下:
Symfony
Search on Symfony website
Exception detected!
Catchable Fatal Error: Argument 1 passed to AppBundleEntityLog::setObject() must be an instance of longtext, string given, called in C:wampwwwsymfony_learnsrcAppBundleServiceloggerService.php on line 22 and defined
500 Internal Server Error - ContextErrorException
似乎存在数据类型的不匹配,但我不太理解它,因为一种数据类型是字符串,第二种是文本,因此在我看来转换应该自动发生。我知道我可以用mySQL cast做到这一点,但我想知道symfony2
和doctrine2
提供了任何工具来处理这种情况?
尝试使用mySql CAST:
CAST(yourVarchar as LONGTEXT)
我发现使用:
php app/console doctrine:generate:entity
导致:
public function setObject(longtext $object)
{
$this->object = $object;
return $this;
}
从setObject()
中移除longtext
解决了我的问题。
此外,我已经改变了我的字段类型为"object"的建议http://doctrine-orm.readthedocs.org/en/latest/reference/basic-mapping.html