urbanindo/yii2-dynamodb

Yii2 的 DynamoDB 扩展

2.0.15 2019-02-22 03:54 UTC

README

这是一个 Yii2 的 DynamoDB 扩展

Latest Stable Version Total Downloads Latest Unstable Version Build Status

需求

此扩展需要

  • PHP 最小版本 7.0 且不超过 7.2(升级仍在进行中)
  • Yii2 最小版本 2.0.13 且低于 2.1
  • AWS PHP SDK 3.28

安装

安装此扩展的首选方式是通过 composer

运行以下命令之一:

php composer.phar require --prefer-dist urbanindo/yii2-dynamodb "*"

或者

"urbanindo/yii2-dynamodb": "*"

将以下内容添加到您的 composer.json 文件的 require 部分中。

设置

安装后,在配置中设置 dynamodb 组件。

return [
    // ...
    'components' => [
        // ...
        'dynamodb' => [
            'class' => 'UrbanIndo\Yii2\DynamoDb\Connection',
            'config' => [
                //This is the config used for Aws\DynamoDb\DynamoDbClient::factory()
                //See http://docs.aws.amazon.com/aws-sdk-php/v2/guide/service-dynamodb.html#factory-method
                'credentials' => [
                    'key'    => 'YOUR_AWS_ACCESS_KEY_ID',
                    'secret' => 'YOUR_AWS_SECRET_ACCESS_KEY',
                ],
                'region' => 'ap-southeast-1',
            ]
        ]
    ],
];

限制

由于 DynamoDB 与 MySQL 的行为不同,因此应用了几个限制或行为更改。从 DynamoDB 获取数据的方法有: GetItemBatchGetItemScanQuery

  1. 我们已尝试实现从查询中自动获取模型的方法。如果您想强制使用该方法,请显式分配方法。
  2. 尚未支持属性名别名(在 MySQL 中称为字段别名)。
  3. 在使用 Query 方法时,WHERE 条件仅支持按键属性过滤。在下一个版本中,我们将添加对非键属性的过滤。
  4. 为了实现分页,我们强制使用 Query 方法,当 WHERE 条件设置时。因为如果您使用非键属性的过滤,则模型结果(可能)将少于期望的限制值。
  5. indexByorderBy 不能与属性字符串值或可调用参数一起使用。这将作为字符串值使用,并分配给 DynamoDB 中的 IndexName 参数。要使用排序,这将强制使用 QUERY 方法,并且 orderBy 参数应该是 ['myIndex' => 'ASC']['myIndex', 'DESC'],并且需要定义键条件表达式。
  6. 不支持 NULL 和任何类型的集合属性。
  7. 不支持属于保留关键字的属性别名,这意味着所有属性都不使用任何 保留关键字
  8. 当使用 LinkPager 时,请勿忘记使用此包中的 ActiveDataProvider。当分页传递到任何类型的 Widget 视图时,一些组件可能不受支持,例如 SerialColumn、摘要中的不必要的总项目数和排序。