传递的参数必须是longtext的实例,字符串给定 - doctrin2 symfony

时间:2015-07-05 15:33:06

标签: php symfony serialization doctrine-orm

我在使用serialize() php命令收到的数据污染定义为文本字段的mySQL字段时遇到问题。我将symfony2doctrine 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强制转换,但我想知道symfony2doctrine2提供了处理这种情况的工具吗?

2 个答案:

答案 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

的建议将我的字段类型更改为“对象”