php - Doctrine 不存储 ArrayCollection

标签 php symfony doctrine-orm arraycollection

我有一个Entity,它有一个像这样的数组字段:

...
    /**
     * @var array
     *
     * @ORM\Column(name="tels", type="json_array")
     */
    private $tels;
...

我使用表单填写此表单,并且在提交 var_dump($entity->getTels()) 返回后正确填写:

object(Doctrine\Common\Collections\ArrayCollection)[448]
  private '_elements' => 
    array (size=1)
      0 => string '123' (length=3)

但是在坚持原则之后会忽略此字段值并存储空数组:

+----+------+
| id | tels |
+----+------+
|  1 | {}   |
+----+------+

问题是什么?

最佳答案

类型 json_array 需要一个数组,然后使用 json_encode 将其转换为 json。虽然 Doctrine ArrayCollection 在技术上是可遍历的,但它不能很好地转换为数组。因此,您需要对其调用 ->toArray() 或将类型更改为 array

$entity->setTels($theArrayCollection->toArray());

关于php - Doctrine 不存储 ArrayCollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26684756/

相关文章:

php - 将动态值插入特定 WooCommerce 电子邮件模板的文本字符串中

javascript - 变量从 PHP 转换成 jQuery 形成链接

php - 如何在 symfony2 中嵌入非实体形式的预充电集合

symfony - FOSRestBundle 和 Behat 的错误 500

doctrine-orm - 教义2 : Subquery alias creates an extra level in results

php - 如何使用我的自定义 Symfony 3.0 Library/Bundle/HowIsCalled

php - 有没有办法在子进程中传递服务/容器?

php - 防止 PHP、PDO 和 MySQL/MariaDB 在不禁用 ATTR_EMULATE_PREPARES 的情况下将整数作为字符串返回

symfony - 在 Symfony2 中通过命令行执行时,CRON 作业不起作用

php - Htaccess 和水印