sergeil / doctrine-entity-data-mapper-bundle
简化了将客户端数据映射到Doctrine ORM管理的实体上的过程。
dev-develop
2016-12-31 16:15 UTC
Requires
- php: >=5.3.0
- doctrine/doctrine-bundle: ~1.2
- doctrine/orm: ~2.2,>=2.2.3
- sergeil/aux-bundle: ~1.1
- sergeil/expander-bundle: ~1.0
- symfony/symfony: ~2.0|~3.0
Requires (Dev)
- modera/foundation-bundle: ~2.0
- phpunit/phpunit: ~3.0
This package is auto-updated.
Last update: 2024-09-06 10:06:36 UTC
README
Bundle提供工具,简化将客户端数据映射到Doctrine ORM管理的实体上。
功能
- 所有基本标量类型映射(布尔值、数字...)
- 支持所有类型的关联(关系关系的双向方面已自动处理)
- 复杂数据类型转换和映射 - 当值在映射到实体之前被转换时
- 在值映射时,将额外的DI服务注入到setter方法
- 灵活的日期/日期时间映射
关于多对多关系的预览
为了说明目的,让我们以用户和组实体为例,并假设它们是双向链接的。
现在,让我们看看一些您可能传递给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。