This is a DynamoDB extension for Yii2
This extension requires
- PHP 5.4
- Yii2
- AWS PHP SDK 2.8
The preferred way to install this extension is through composer.
Either run
php composer.phar require --prefer-dist urbanindo/yii2-dynamodb "*"
or add
"urbanindo/yii2-dynamodb": "*"
to the require section of your composer.json
file.
After the installation, sets the dynamodb
component in the config.
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',
]
]
],
];
Because DynamoDB have different behavior from MySQL, there are several limitations or behavior change applied. There are several method to get data from DynamoDB: GetItem, BatchGetItem, Scan, and Query.
- We have tried to implement automatic method to acquire model from Query. You should assign method explicitly if you want to force the method to use.
- Not yet support attribute name aliasing (In MySQL known as field aliasing).
- When using Query method, where condition just support filter by key attributes. In next roll out we will add filtering with non key attributes.
- To make pagination, we forcedly using Query method when WHERE condition is set. Because if you use filtering with non key attribute, it is possible the model result(s) will less than desired limit value.
indexBy
andorderBy
cannot use with attribute string value or callable parameter. This will use as string value and assign toIndexName
parameter in DynamoDB. To use sorting, this will forcedly use QUERY method andorderBy
parameter should be either['myIndex' => 'ASC']
or['myIndex', 'DESC']
and key condition expression should be defined.- Not support NULL and any kind of set attribute type.
- Not support attribute aliasing belong to Reserve Keywords, which means all attributes do not using any Reserve Keywords.
- When use LinkPager, do not forget use ActiveDataProvider from this package. When the pagination pass into any kind of Widget View, several components maybe unsupported like SerialColumn, unnecessary total items in summary, and sorting.