传递的参数必须是一个longtext, string given - doctrin2 symfony的实例



我有问题污染mySQL字段定义为文本字段与serialize() php命令接收的数据的结果。我用symfony2doctrine 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做到这一点,但我想知道symfony2doctrine2提供了任何工具来处理这种情况?

尝试使用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

相关内容

最新更新