Symfony MongoDB嵌入文档未传subData时存空数组而非不保存字段
问题:自继承EmbeddedDocument未传入subData时被存为空数组,期望不保存该字段
我有一个自继承的EmbeddedDocument文档类,功能运行正常,但当未传入subData时,它在Mongo中被保存为空数组(subData: [])。我期望未传入该字段时不保存它。已尝试设置nullable=false和nullable=true,不在构造函数中初始化ArrayCollection会触发错误Call to a member function add() on null。
使用的版本信息
- Symfony 4.3
- doctrine/mongodb 1.6.4
- doctrine/mongodb-odm 1.3.7
- doctrine/mongodb-odm-bundle 3.6.2
相关代码
<?php namespace App\Document; use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; /** * @MongoDB\EmbeddedDocument() */ class Data { /** * @MongoDB\Id() */ private $id; /** * @MongoDB\Field(type="string") */ private $value; /** * @MongoDB\EmbedMany(targetDocument="App\Document\Data", nullable=false) */ public $subData = null; public function __construct() { $this->subData = new ArrayCollection(); } public function getId(): ?string { return $this->id; } public function getValue(): ?string { return $this->value; } public function setValue(string $value): self { $this->value = $value; return $this; } public function getSubData(): Collection { return $this->subData; } public function setSubData(array $subData): self { $this->subData = $subData; return $this; } public function addSubdata(Data $subData): self { $this->subData->add($subData); return $this; } }
更新说明:按照@Maniax建议修改setter后问题仍未解决,subData仍被保存为[],修改后的setter代码:
public function setSubData(array $subData): self { if(!empty($subData) && count($subData) > 0 && $subData !== null) { $this->subData = $subData; } return $this; }
内容的提问来源于stack exchange,提问作者Pinks Not Dead
相关产品推荐
相关产品推荐

