zeliard91 / dynamodb-connector-bundle
Symfony 2 DynamoDB 连接服务,用于与 cpliakas/dynamo-db-odm 配合使用
dev-master
2014-09-06 19:32 UTC
Requires
- php: >=5.3.3
- cpliakas/dynamo-db-odm: dev-master
- symfony/monolog-bundle: 2.*
- symfony/symfony: 2.*
This package is auto-updated.
Last update: 2024-09-19 02:20:31 UTC
README
此捆绑包提供了一种 symfony 2 服务,用于与 cpliakas/dynamo-db-odm 交互。
安装
安装是一个快速的三步过程
- 使用 composer 下载 Zeliard91DynamoDBConnectorBundle
- 启用捆绑包
- 配置应用配置文件 config.yml
第一步:使用 composer 下载 Zeliard91DynamoDBConnectorBundle
在 composer.json 中添加 Zeliard91DynamoDBConnectorBundle
{ "require": { "zeliard91/dynamodb-connector-bundle": "dev-master" } }
现在运行命令让 composer 下载捆绑包
$ php composer.phar update zeliard91/dynamodb-connector-bundle
Composer 会将捆绑包安装到项目中的 vendor/zeliard91/dynamodb-connector-bundle
目录。
第二步:启用捆绑包
在内核中启用捆绑包
<?php // app/AppKernel.php public function registerBundles() { $bundles = array( // ... new Zeliard91\Bundle\DynamoDBConnectorBundle\Zeliard91DynamoDBConnectorBundle(), ); }
第三步:在项目配置文件中添加您的 DynamoDB 凭据
# app/config/config.yml zeliard91_dynamo_db_connector: # get the values from parameters.yml key: "%dynamodb_key%" secret: "%dynamodb_secret%" region: "eu-west-1" # optional : for dev, you can specify base url base_url: "%dynamodb_url%" # optional : location of your entities entity_namespaces: - Foo\BarBundle\Entity
使用
访问服务对象
您可以通过调用服务来获取 DynamoDB 客户端和文档管理器。
<?php $document_manager = $this->get('zeliard91_dynamo_db_connector')->getManager(); $dynamo_client = $this->get('zeliard91_dynamo_db_connector')->getDynamoDb(); $schema_manager = $this->get('zeliard91_dynamo_db_connector')->getSchemaManager();
实体仓库
如果您已注册实体命名空间,您还可以创建仓库类来定义查询。
假设您已创建了实体 Foo\BarBundle\Entity\Book.php
现在定义仓库类,它必须在同一目录中,并且必须以 'Repository' 结尾
<?php // Foo/BarBundle/Entity/BookRepository.php namespace Foo\BarBundle\Entity; use Zeliard91\Bundle\DynamoDBConnectorBundle\Repository\DefaultRepository as Repository; use Cpliakas\DynamoDb\ODM\Conditions; use Aws\DynamoDb\Enum\ComparisonOperator; class BookRepository extends Repository { /** * Find all books from an author * @param string $author * @return array */ public function findByAuthor($author) { $conditions = Conditions::factory() ->addCondition('author', $author, ComparisonOperator::EQ) ; return $this->scan($conditions); } }
您现在可以在控制器中调用该方法
<?php $book_repository = $this->get('zeliard91_dynamo_db_connector')->getRepository('Book'); $books = $book_repository->findByAuthor($author); // Here are some methods from the extended DefaultRepository $book = $book_repository->find($id); $book = $book_repository->find($id, $range); // if you have defined a range attribute $books = $book_repository->findAll();
模式管理器
通过使用此对象,您可以创建、检查或删除与实体关联的表
<?php $schema_manager = $this->get('zeliard91_dynamo_db_connector')->getSchemaManager(); $schema_manager->isTableExists('Book'); // returns true or false $schema_manager->createTable('Book'); // throws exception if table already exists $schema_manager->deleteTable('Book'); // throws exception if table does not exist