如何解决奏鸣曲管理包更新文档导致删除嵌入的文档
我有一个使用 SonataAdmin 创建的应用程序,使用 ODM(Mongo)。 我有 2 个类(部分和级别),其中第一个(部分)可以从 Level 中嵌入 Many。 当我创建一个文档(Section)并在其中嵌入一些级别时,它工作正常,但更新该文档将导致删除所有嵌入的文档(级别)。
两个类:
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
/**
* @MongoDB\Document
*/
class Level
{
/**
* @MongoDB\Id
*/
protected $id;
/**
* @MongoDB\Field(type="string")
*/
protected $label;
...
}
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
/**
* @MongoDB\Document
*/
class Section
{
/**
* @MongoDB\Id
*/
protected $id;
/**
* @MongoDB\Field(type="string")
*/
protected $label;
/**
* @MongoDB\EmbedMany(targetDocument=Level::class)
*/
protected $levels;
}
管理文件部分
final class SectionAdmin extends AbstractAdmin
{
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('id')
->add('label')
->add('levels')
// add custom action links
->add('_action','actions',[
'actions' => [
'view' => [],'edit' => [],]
]);
}
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper->add('label')->add('levels');
}
protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$datagridMapper->add('label')->add('levels');
}
}
点击更新后登录:
PHP_1 | NOTICE: PHP message: [debug] MongoDB command: {"update":"Section","ordered":true,"$db":"symfony","updates":[{"q":{"_id":{"$oid":"6067980a450b7345b76bc8f4"}},"u":{"$unset":{"levels.0":true,"levels.1":true}},"upsert":false,"multi":false}]}
PHP_1 | NOTICE: PHP message: [debug] MongoDB command: {"update":"Section","u":{"$pull":{"levels":null}},"u":{"$push":{"levels":{"$each":[{"_id":{"$oid":"606666688041ee13136a5f52"},"label":"5eme"},{"_id":{"$oid":"6066666d8041ee13136a5f53"},"label":"6eme"},{"_id":{"$oid":"6067962f493d2118fc74f5c2"},"label":"1 ere"}]}}},"multi":false}]}
PHP_1 | NOTICE: PHP message: [debug] MongoDB command: {"delete":"Level","deletes":[{"q":{"_id":{"$oid":"606666688041ee13136a5f52"}},"limit":1}]}
PHP_1 | NOTICE: PHP message: [debug] MongoDB command: {"delete":"Level","deletes":[{"q":{"_id":{"$oid":"6066666d8041ee13136a5f53"}},"limit":1}]}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。