id009 / neo4jbundle
此包将Neo4j OGM库集成到Symfony中,包括基本的用户提供者和表单集成
Requires
- php: >=5.3.2
- everyman/neo4jphp: dev-master
- hirevoice/neo4jphp-ogm: dev-master
- symfony/symfony: >=2.1
This package is not auto-updated.
Last update: 2024-09-28 14:06:57 UTC
README
提供与Symfony的集成Neo4j PHP对象图映射器
使用Composer安装
要安装此包,只需将以下行添加到您的composer.json文件的"require"部分:"id009/neo4jbundle": "dev-master"
运行php composer.phar update
命令。更新完成后,在您的AppKernel.php中注册此包
// app/AppKernel.php public function registerBundles() { $bundles = array( // ... new id009\Neo4jBundle\id009Neo4jBundle(), ); // ... }
配置
要完成包安装,您需要配置设置实体管理和连接。下面是一个相当完整的配置示例。
id009_neo4j: connections: default: host: localhost port: 7474 username: user password: pass entity_managers: default: debug: true #For pathfinding algorithms refer to Everyman\Neo4j\PathFinder pathfinder_algorithm: allSimplePaths pathfinder_maxdepth: 5
但在大多数情况下,您可能需要类似下面的配置
id009_neo4j: connections: default: entity_managers: default:
这就完了。在上述配置中,默认主机为localhost,端口号为7474。调试模式来自全局调试参数。现在,在包安装和配置正确后,您就可以开始使用了。
基本用法
请参阅Neo4j PHP对象图映射器的readme文件,了解OGM的工作方式。
如果您处理过Doctrine ORM包,您会发现Neo4j Bundle的基本用法非常简单。
// Your controller... $em = $this->get('id009_neo4j.entity_manager'); // Now you have an instance of HireVoice\Neo4j\EntityManager class. You can do whatever you want with it. $em->getRepository('Acme\AcmeBundle\Entity')->findOneByUsername('ivanpetrov99'); // and so on...
安全
此包提供基本的OGMUser类和安全提供者,它们与cookbook中描述的实体提供者功能相同。下面是基本的安全配置示例。
providers: neo4j_provider: neo4j: {class: id009\Neo4jBundle\Security\User\OGMUser}
表单
如果没有与Symfony表单的集成,此包将不足以使用。让我们看看如何使用它。
例如,您有一个Person和City类,如下所示。
// Acme\AcmeBundle\Entity\Person /** * @OGM\Entity */ class Person { //... /** * @OGM\ManyToOne */ protected $city; //... } // Acme\AcmeBundle\Entity\City /** * @OGM\Entity */ class City { //... }
在编辑Person时选择City,这是一个不错的主意,对吧?下面是一个示例
// Acme\AcmeBundle\Form\Type\PersonType public function buildForm(FormBuilderInterface $builder, array $options) { //... $builder->add('city', null, array( 'class' => 'Acme\AcmeBundle\Entity\City' )); //... }
表单类型将被自动检测为neo4j_entity
,并带有选项array('multiple' => false, 'expanded' => false)
,它将渲染为下拉列表。
事件
OGM提供三种类型的事件
- 实体创建
- 关系创建
- 查询执行
请参阅HireVoice\Neo4j\EntityManager以获取有关这些事件的详细信息。
如果您想订阅这些事件,可以创建自己的Subscriber类,该类实现了Symfony\Component\EventDispatcher\EventSubscriberInterface
。但为了方便起见,此包提供了一个抽象类id009\Neo4jBundle\Event\AbstractSubscriber
,您可以从它继承您的订阅者。例如
namespace Acme\AcmeBundle\Event //... class MySubscriber extends AbstractSubscriber { public function onEntityCreate($entity) { //... } public function onRelationCreate($relation, $a, $b, $relationship) { //... } public function onQueryRun($query, $parameters, $time) { //... } }
现在,在您的订阅者完成之后,在您的services.yml文件中注册它
acme_acmebundle.event.subscriber: class: 'Acme\AcmeBundle\Event\MySubscriber' tags: - {name: id009_neo4j.subscriber}
如果您在项目中使用了多个实体管理器,只需在标签中添加带有实体管理器名称的属性manager
贡献者
Alex Belyaev @lex009
您随时欢迎贡献!
我将非常感激任何反馈。
许可证
MIT