Symfony 2 - 无法插入 json_array 类型变量

Posted

技术标签:

【中文标题】Symfony 2 - 无法插入 json_array 类型变量【英文标题】:Symfony 2 - could not able to insert json_array type variable 【发布时间】:2018-07-15 00:08:11 【问题描述】:

json_array 类型变量无法包含到数据库中。填充的异常如下

(Symfony\Component\Debug\Exception\ContextErrorException(code: 0): Warning: implode(): Invalid arguments passed at /var/www/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/SimpleArrayType.php:51)"

我的实体类有这部分 json_array 类型参数。

/**
*
* @ORM\Column(name="street", type="json_array")
*/
private $street;

我还使用实体管理器将其包含到数据库中。

$entityName->setStreet(
           array(
              'street_1' => $queueItem->street_1,
              'street_2' => $queueItem->street_2));

if($this->em->getUnitOfWork()->getEntityState($entityName)) 
               $this->em->flush();

【问题讨论】:

您是否尝试将您传递给setStreet的数组转储? 我的 var_dump 是 array(2) 'street_1' => string(38) "address line 1" 'street_2' => string(10) "Office 101" 【参考方案1】:

我认为您应该在多条街道上使用type="text" 或自己的实体

http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/types.html#text

因为:

    type="json_array" 已弃用 type="json" http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/types.html#json-array 这种类型需要一个可以编码的字符串,而不是一个数组

【讨论】:

以上是关于Symfony 2 - 无法插入 json_array 类型变量的主要内容,如果未能解决你的问题,请参考以下文章

Symfony 2 - 从表中获取最后插入的行

Symfony 4 / doctrine插入初始数据库数据

Symfony 2 无法解决 Construct

Symfony 2 - 无法使用集合保存表单

无法在 Symfony2 2.4 中安装 SonataUserBundle

无法从 Symfony 2 上的内存登录中注销