mapado / doctrine-blender
此包已被放弃,不再维护。没有建议的替代包。
负责“混合”doctrine实体(ORM、ODM等)的包
v0.6.0
2014-10-13 09:11 UTC
Requires
- doctrine/common: 2.*
Requires (Dev)
- phpunit/phpunit: 4.2.*
Suggests
- doctrine/mongodb-odm: 1.*
- doctrine/orm: 2.*
- mapado/elastica-query-bundle: 1.*
- symfony/yaml: 2.*
README
此包使得混合 doctrine 实体(ORM、ODM等)变得非常简单。
它深受Doctrine MongoDB ODM 文档中关于此主题的启发。
当前状态
它应该与每个 doctrine 包兼容。它已经与 Doctrine ORM 和 Doctrine MongoDB 进行了测试。
它还与mapado/elastica-query-bundle在 ElasticSearch => Doctrine 方向上协同工作。
安装
composer require "mapado/doctrine-blender:0.*"
用法
混合 ORM 实体和 ODM 文档
use Mapado\DoctrineBlender\ObjectBlender; use Mapado\DoctrineBlender\ExternalAssociation; $documentManager = ... // get a document manager $entityManager = ... // get an entity manager $eventSubscriber = new ObjectBlender; $eventSubscriber->mapExternalAssociation( new ExternalAssociation( $entityManager, 'Acme\Entity\Order', 'product', $documentManager, 'Acme\Document\Product', 'getProductId', // optional, auto-generated with the property name 'setProduct' // optional, auto-generated with the property name ) );
混合位于不同实体管理器中的 ORM 实体
混合 ORM 实体也非常简单
use Mapado\DoctrineBlender\ObjectBlender; use Mapado\DoctrineBlender\ExternalAssociation; $entityManager = ... // get an entity manager $secondEntityManager = ... // get the second manager $eventSubscriber = new ObjectBlender; $eventSubscriber->mapExternalAssociation( new ExternalAssociation( $entityManager, 'Acme\Entity\Order', 'product', $secondEntityManager, 'Acme\Document\Product' ) );
配置
Yaml
doctrine_external_association: client_address: # this key is only for you source_object_manager_alias: product_em # an alias you will need to inject later classname: 'Entity\Product' property_name: 'product' reference_object_manager_alias: order_dm # another alia reference_class: 'Document\Order' reference_getter: 'getProductId' reference_setter: 'setProduct'
use Mapado\DoctrineBlender\Configuration\YamlConfiguration; $ymlConf = new YamlConfiguration('/path/to/external_association.yml'); $entityManager = ... // get an entity manager $documentManager = ... // get a document manager $ymlConf->setObjectManagerReference('product_em', $entityManager) ->setObjectManagerReference('order_dm', $documentManager) ;