sergeil/doctrine-entity-data-mapper-bundle

简化了将客户端数据映射到Doctrine ORM管理的实体上的过程。

dev-develop 2016-12-31 16:15 UTC

This package is auto-updated.

Last update: 2024-09-06 10:06:36 UTC


README

Bundle提供工具,简化将客户端数据映射到Doctrine ORM管理的实体上。

功能

  • 所有基本标量类型映射(布尔值、数字...)
  • 支持所有类型的关联(关系关系的双向方面已自动处理)
  • 复杂数据类型转换和映射 - 当值在映射到实体之前被转换时
  • 在值映射时,将额外的DI服务注入到setter方法
  • 灵活的日期/日期时间映射

关于多对多关系的预览

为了说明目的,让我们以用户和组实体为例,并假设它们是双向链接的。

User and Group

现在,让我们看看一些您可能传递给EntityDataMapperService的示例数组数据结构,以便将其正确映射到您的实体上。为了说明目的,我们假设有两个用户 - "Jane Doe"和"John Doe",ID分别为1和2,以及三个组:"Admins"、"Users"、"Moderators",ID分别为1、2、3。

$em = $container->get('doctrine.orm.entity_manager');
$mapper = $container->get('sli_doctrine_entity_data_mapper.mapping.entity_data_mapper');

$adminsGroup = $em->find('MyBundle:Group', 1);
$usersGroup = $em->find('MyBundle:Group', 2);
$moderatorsGroup = $em->find('MyBundle:Group', 3);

$john = new User('John Doe');
$jane = new User('Jane Doe');

$userParams = array(
    'groups' => [1, 2]
);

$mapper->mapEntity($john, $userParams, array_keys($userParams));

$em->persist($john);
$em->persist($jane);
$em->flush();

echo count($john->groups); // two elements, groups "Admins" and "Users" were fetched from database by their IDs
echo count($adminGroup->users); // one element
echo count($usersGroup->users); // one element
echo count($moderatorsGroup->users); // zero elements

现在让我们假设在下一次请求中,我们想要将"$john"用户仅属于"Moderators"组

$userParams = array(
    'groups' => [3]
);

$mapper->mapEntity($john, $userParams, array_keys($userParams));

发生了一些事情

  • "Admins"和"Users"组被从用户的集合中删除
  • "John Doe"被从"Admins"和"Users"组的集合中删除
  • "John Doe"被添加到"Moderators"组
  • "Moderators"组被添加到John Doe的用户组集合中

安装

将此依赖项添加到您的composer.json文件中

"sergeil/doctrine-entity-data-mapper-bundle": "dev-develop"

更新您的AppKernel类并添加以下内容

new Sli\DoctrineEntityDataMapperBundle\SliDoctrineEntityDataMapperBundle(),

文档

查看Resources/doc/index.md

许可

此bundle受MIT许可协议的约束。有关完整许可,请参阅bundle中的Resources/meta/LICENSE。