zeliard91/dynamodb-connector-bundle

Symfony 2 DynamoDB 连接服务,用于与 cpliakas/dynamo-db-odm 配合使用

dev-master 2014-09-06 19:32 UTC

This package is auto-updated.

Last update: 2024-09-19 02:20:31 UTC


README

此捆绑包提供了一种 symfony 2 服务,用于与 cpliakas/dynamo-db-odm 交互。

安装

安装是一个快速的三步过程

  1. 使用 composer 下载 Zeliard91DynamoDBConnectorBundle
  2. 启用捆绑包
  3. 配置应用配置文件 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