kettle / dynamodb-orm
PHP的轻量级对象-DynamoDB映射器
v0.2.8
2016-01-02 16:50 UTC
Requires
- php: >=5.4.0
- aws/aws-sdk-php: 3.*
Requires (Dev)
- phpunit/phpunit: 3.7.*
This package is not auto-updated.
Last update: 2024-09-14 15:06:04 UTC
README
Kettle 是一个轻量级的 PHP 对象-DynamoDB 映射器。Kettle 提供了一个简单的接口来操作 Amazon DynamoDB。
查看一些代码示例
<?php use Kettle\ORM; $user = ORM::factory('User')->findOne(10); $user->name = 'John'; $user->save(); $tweets = ORM::factory('Tweet')->where('user_id', 10) ->findMany(); foreach ($tweets as $tweet) { echo $tweet->text . PHP_EOL; }
- 安装
此包可在 Packagist 上找到,您可以使用 Composer 安装它。
$ cat <<EOF > composer.json
{
"require": {
"kettle/dynamodb-orm": "0.2.*"
}
}
EOF
$ composer install
- 配置
<?php use Kettle\ORM; ORM::configure("key", 'AWS_KEY'); ORM::configure("secret", 'AWS_SECRET'); ORM::configure("region", 'AWS_REGION'); // In order to use DynamoDB Local, you need to set "base_url". // ORM::configure("base_url", 'https://:8000/');
如果您正在使用多个 AWS 账户,请按照以下方式操作。
<?php use Kettle\ORM; ORM::configure("key", 'AWS_KEY', 'account-2'); ORM::configure("secret", 'AWS_SECRET', 'account-2'); ORM::configure("region", 'AWS_REGION', 'account-2'); $user = ORM::factory('User', 'account-2');
- 创建模型类
<?php class User extends ORM { protected $_table_name = 'user'; protected $_hash_key = 'user_id'; protected $_schema = array( 'user_id' => 'N', // user_id is number 'name' => 'S', // name is string 'age' => 'N', 'country' => 'S', ); }
如果您使用生成器,也可以创建如下类。
$ php bin/kettle-skeleton.php --table-name user --region ap-northeast-1 > User.php
表必须已经提前创建。因为此生成器基于“describeTable”和“scan”操作收集的信息和数据来生成类。
- 创建
<?php $user = ORM::factory('User')->create(); $user->user_id = 1; $user->name = 'John'; $user->age = 20; $user->save();
- 检索
<?php $user = ORM::factory('User')->findOne(1); echo $user->name. PHP_EOL; print_r($user->asArray());
- 更新
<?php $user = ORM::factory('User')->findOne(1); $user->age = 21; $user->save();
- 删除
<?php $user = ORM::factory('User')->findOne(1); $user->delete();
- 查找
<?php $tweets = ORM::factory('Tweets') ->where('user_id', 1) ->where('timestamp', '>', 1397264554) ->findMany(); foreach ($tweets as $tweet) { echo $tweet->text . PHP_EOL; }
- 查找第一条记录
<?php $tweet = ORM::factory('Tweets') ->where('user_id', 1) ->where('timestamp', '>', 1397264554) ->findFirst(); echo $tweet->text . PHP_EOL;
- 通过全局二级索引查找
<?php $users = ORM::factory('User') ->where('country', 'Japan') ->where('age', '>=', 20) ->index('country-age-index') // specify index name ->findMany();
- 查询筛选
<?php $tweets = ORM::factory('Tweets') ->where('user_id', 1) ->filter('is_deleted', 0) // using filter ->findMany();