robert-grubb/filerdb-php

v2.0 2024-01-10 05:17 UTC

This package is auto-updated.

Last update: 2024-09-10 06:39:40 UTC


README

一个简单的 PHP 平文件数据库,旨在快速启动您的应用程序。请注意,此包目前处于开发阶段,尚未发布。

用法

通过 composer 安装

composer require robert-grubb/filerdb-php

注意:请确保您的数据库目录具有正确的读和写权限。

实例化

use FilerDB\Instance;

// Instantiate Database
$filerdb = new Instance([ 'root' => __DIR__ . '/database/' ]);

配置

[

  /**
   * This is the root path for FilerDB.
   */
  'root' => false,

  /**
   * If the root path does not exist, try
   * and create it.
   */
  'createRootIfNotExist' => false,

  /**
   * If the database does not exist, try
   * and create it.
   */
  'createDatabaseIfNotExist' => false,

  /**
   * If the collection does not exist, attempt
   * to create it.
   */
  'createCollectionIfNotExist' => false,

  /**
   * If the insert and update logic handles
   * the createdAt and updatedAt timestamps
   * automatically
   */
  'includeTimestamps' => false

]

创建数据库

$filerdb->databases->create('dev');

检查数据库是否存在

$filerdb->databases->exists('dev'); // Returns true or false

列出所有数据库

$filerdb->databases->list(); // Returns array

删除数据库

$filerdb->databases->delete('dev');

选择默认数据库

选择默认数据库允许您在每次调用时不必指定数据库。请参考以下代码了解如何操作。

// Specify it in the configuration:
$filerdb = new Instance([
  'path' => __DIR__ . '/database/',
  'database' => 'database_name'
]);

$filerdb->selectDatabase('database_name');

使用上述方法,您现在可以执行以下操作

$filerdb->collection('users')->all(); // Notice no ->database()

列出数据库中的集合

$filerdb->database('dev')->collections(); // Returns array

检查集合是否存在

$filerdb->database('dev')->collectionExists('dev'); // Returns true of false

创建集合

$filerdb->database('dev')->createCollection('users');

删除集合

$filerdb->database('dev')->deleteCollection('users');

清空集合

$filerdb->database('dev')->collection('users')->empty();

插入文档

$filerdb->database('dev')->collection('users')->insert([
  'username' => 'test',
  'email'    => 'test@test.com'
]);

更新文档


// By a specific document
$filerdb
  ->database('dev')
  ->collection('users')
  ->id('ad23tasdg')
  ->update([
    'username' => 'test2'
  ]);

// Where all usernames equal test
$filerdb
  ->database('dev')
  ->collection('users')
  ->filter(['username' => 'test'])
  ->update([
    'username' => 'test2'
  ]);

删除文档

// Specific document
$filerdb
  ->database('dev')
  ->collection('users')
  ->id('asdfwegd')
  ->delete();

// With filters
$filerdb
  ->database('dev')
  ->collection('users')
  ->filter(['username' => 'test'])
  ->delete();

检索所有文档

$filerdb->database('dev')->collection('users')->all()

通过 ID 检索文档

$filerdb
  ->database('dev')
  ->collection('users')
  ->id('asdf23g')
  ->get();

通过过滤器检索文档

// Get users with username of test and greater than age of 10.
$filerdb
  ->database('dev')
  ->collection('users')
  ->filter(['username' => 'test'])
  ->filter([ ['age', '>', '10'] ])
  ->get();

指定响应中返回的字段

// Only returns the username field
$filerdb
  ->database('dev')
  ->collection('users')
  ->get(['username']);

按字段排序文档

// Get users with username of test and greater than age of 10.
$filerdb
  ->database('dev')
  ->collection('users')
  ->orderBy('username', 'asc')
  ->get();

限制文档数量

// Pull upto 10 documents
$filerdb
  ->database('dev')
  ->collection('users')
  ->limit(10)
  ->get();

偏移文档

// Pull upto 10 documents, but start at the
// 9th array key.
$filerdb
  ->database('dev')
  ->collection('users')
  ->limit(10, 9)
  ->get();

备份

您现在可以程序化地备份数据库。您可以使用以下代码执行此操作

$filerdb->backup->create('file_name_here.zip');

提供此功能是为了让您可以通过自己的命令行脚本来手动备份数据库,或者通过 cron 作业或类似的方式自动备份。