maxgaussdev / ccouchconnect
PHP CouchDB 的 cURL 包装器
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-09-14 17:59:02 UTC
README
这是一个简单的 PHP CouchDB cURL 包装器,用于 CouchDB 中的基本 CRUD 命令。
#导入
使用 composer
composer require maxgaussdev/ccouchconnect
要导入类,您只需包含 CCouchConnect.php 文件并使用命名空间
include('CCouchConnect.php');
use CCouch\Database\CCouchConnect as Database;
#设置数据库
构造函数支持方法重载,因此基本上有三种方式来创建数据库对象
$db = new Database('database', 'server');
$db = new Database('database', 'server', 5984);
$db = new Database('database', 'server', 5984, 'username', 'password');
默认情况下,端口将设置为 CouchDB 的常用端口 5984。
建议您使用现有的数据库,但如果您需要使用 PHP 创建一个数据库,可以使用 createDatabase() 方法,该方法可以以多种方式使用
// declare a new database that does not exist on the server
$db = new Database('database', 'server');
// we use createDatabase() method to create it
if(!$db->createDatabase->error){
// success
}else{
// fail
}
// this can also be set using empty constructor and usual setters
$db = new Database();
$db->setDatabase('dbname');
$db->setServer('localhost');
if(!$db->createDatabase->error){
// success
}else{
// fail
}
如果事先未设置,端口将定义为默认的 5984。
#如何使用
公共数据库查询方法将返回 stdObjects 作为结果,如果需要详细信息,请使用 print_r()。
有几个方法允许您对对象执行基本的 CRUD。默认情况下,返回值将是 php 的 stdObjects。
数据库信息
$result = $db->dbInfo();
#创建文档
$document = array(
"name" => "foo",
"occupation" => "bar"
);
$result = $db->addNew($document);
这将返回一个默认带有 createdAt 和 updatedAt 参数的 std object(使用 Datetime),如下所示
stdClass Object
(
[_id] => efdf1c6dde49b78bf9834424131037f5
[_rev] => 1-4fb5af102470b0304292ec418e0cab09
[name] => foo
[occupation] => bar
[createdAt] => stdClass Object
(
[date] => 2016-04-08 11:41:06.000000
[timezone_type] => 3
[timezone] => Europe/Berlin
)
[updatedAt] => stdClass Object
(
[date] => 2016-04-08 11:41:06.000000
[timezone_type] => 3
[timezone] => Europe/Berlin
)
)
#获取文档
有几个方法可以从 CouchDB 中检索文档。
// returns document object by _id
$result = $db->findById('efdf1c6dde49b78bf9834424131037f5');
// returns an array of document objects filtered by array of keys and their values
$result = $db->findBy(array("key" => "value"));
// returns a document object filtered by array of keys and their values
$result = $db->findOneBy(array("key" => "value"));
// example with our object above:
$result = $db->findOneBy(array("name" => "foo", "occupation" => "bar"));
$result = $db->findAll();
// returns an array of all document objects
findBy() 方法在数据库中创建一个视图(默认设计文档为 _design/ccouch_views),每个搜索输入都有一个视图名称的 md5 哈希。
如果您不希望在设计文档中缓存搜索数据,有两种以下方法
$result = $db->findByNoCache(array("key" => "value"));
$result = $db->findOneByNoCache(array("key" => "value"));
这两种方法都将使用临时视图返回数据。
如果您希望搜索具有关键字值的文档,无论是否指定参数,都实现了一个简单的搜索方法
$result = $db->search('keyword');
#带有限制和偏移量查找文档
限制和偏移量可以使用以下方式使用,并且是可选参数
$result = $db->findAll($limit, $offset);
$result = $db->findByNoCache(array("key" => "value"),$limit, $offset);
$result = $db->findBy(array("key" => "value"),$limit, $offset);
#更新和删除文档
更新文档很简单,您只需将对象作为参数传递给 save() 方法
// some document from the database
$document = $db->findById('efdf1c6dde49b78bf9834424131037f5');
$document->name = "foo foo";
$result = $db->save($document);
删除文档
// some document from the database
$document = $db->findById('efdf1c6dde49b78bf9834424131037f5');
$result = $db->delete($document);
尽管不推荐,但您还可以清除文档。典型 CouchDb 清除规则适用
// some document from the database
$document = $db->findById('efdf1c6dde49b78bf9834424131037f5');
$result = $db->purge($document);
#批量方法
目前有两种批量方法。在单个请求中添加和删除多个文档
// some documents
$documentsArray = array($document1, $document2, $document3,...);
// add multiple new documents
$result = $db->saveBulk($documentsArray);
// delete multiple documents
$result = $db->deleteBulk($documentsArray);
这两种方法都将接受文档对象的数组作为参数。返回结果将是一个包含状态的对象的数组。
#附加方法
// get document ids (findAll() withoud document details)
$result = $db->listDocuments();
// get ids of changed documents
$result = $db->listChanges();
// get list of all databases
$result = $db->listDatabases();
// delete database
$result = $db->deleteDatabase();
#未来版本
以下是未来版本的计划列表
- 支持自定义视图操作
- 附件支持
- 缓存清理
- 文档更新