ibrows/association-resolver-bundle 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

ibrows/association-resolver-bundle

最新稳定版本:1.0.6

Composer 安装命令:

composer require ibrows/association-resolver-bundle

包简介

Resolve relations over annotations

README 文档

README

This Bundle is now stored here: https://gitlab.pwc-digital.ch/ec/bundles/IbrowsAssociationResolverBundle

iBrows Association Bundle

A simple bundle to resolve associations on entities when they'll be imported from an external source

Create an annotation

See Annotation/OneToMany.php

In this case I'm going to create a new OneToMany-annotation for this bundle. Therefore I create a new class called OneToMany in the 'Annotation' folder and annotate the class with @Annotation and extend it from the AbstractAssociation If you need to add some properties which can be configured in the annotation create a public property in the Annotation and create the getter/setter

Create the resolver

See Resolver/Type/OneToMany.php

To handle the entity with our annotation @OneToMany we have to create a resolver with the exact same name as the annotation class name. Our resolver extends the AbstractResolver to handle the annotated entity correctly. While extending the AbstractResolver we have to implement an abstract function to handle an entity and recive all the configurated properties.

    
        /**
         * @param ResultBag $resultBag
         * @param AssociationMappingInfoInterface $mappingInfo
         * @param string $propertyName
         * @param mixed $entity
         * @param OutputInterface $output
         * @return ResolverInterface
         */
        public function resolveAssociation(
            ResultBag $resultBag,
            AssociationMappingInfoInterface $mappingInfo,
            $propertyName,
            $entity,
            OutputInterface $output
        )
    

in the function body we extract the data from the mappinginfo for further operations. Inside the MappingInfo object where two properties. The Annotation and the Metadata. The Annotation object holds all the data which can be configured in the annotation. In our case we have 2 properties

public $collectionAddFunctionName;
public $collectionRemoveFunctionName;

collectionAddFunctionName to customize the add function. If this property is not set the method name will be generated with an 'add' as prefix and the propertyname as suffix

collectionRemoveFunctionName to customize the remove function. If this property is not set the method name will be generated with an 'remove' as prefix and the propertyname as suffix

The Service

To make the resolver functional you have to register the resolver as a service in the service.xml
<service id="ibrows_associationresolver.resolver.onetoone" class="Ibrows\AssociationResolver\Resolver\Type\OneToOne">
    <argument type="service" id="doctrine.orm.entity_manager" />
    <tag priority="-20" name="ibrows_associationresolver.resolverchain" />
    <call method="setSoftdeletable">
        <argument>%ibrows_associationresolver.softdelete%</argument>
    </call>
    <call method="setSoftdeletableGetter">
        <argument>%ibrows_associationresolver.softdeletegetter%</argument>
    </call>
</service>
´

The tag defines the position in the chain.

统计信息

  • 总下载量: 12.06k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2013-02-20

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固