darkterminal/gitlab-json-db

一个PHP类,可以将JSON文件作为数据库读取。用于通过Gitlab API创建示例数据库,灵感来源于donjajo/jsondb

v1.1 2022-03-14 06:09 UTC

This package is auto-updated.

Last update: 2024-09-14 11:48:33 UTC


README

一个PHP类,可以将JSON文件作为数据库读取。用于通过Gitlab API创建示例数据库,灵感来源于donjajo/php-jsondb

用法

安装包

composer require darkterminal/GitlabDB

初始化

<?php
use GitlabDB\GitlabDB;

$options['personal_access_token']    = "YOUR_GITLAB_ACCESS_TOKEN";
$options['project_id']               = "YOUR_GITLAB_PROJECT_ID";
$options['branch']                   = "YOUR_GITLAB_BRANCH";
$options['cloud_url']                = "YOUR_GITLAB_URL";

$path = 'YOUR_PATH_ON_GITLAB';

$json_db = new GitlabDB( $options, $path ); // Or passing the file path of your json files with no trailing slash, default is the root directory. E.g.  new GitlabDB( $options, 'database' )

插入

将数据插入到新的JSON文件中。这里以users.json为例

注意: 首先插入的列将成为其他插入的唯一允许列

<?php
$json_db->insert( 'users.json',
	[
		'name' => 'Thomas',
		'state' => 'Nigeria',
		'age' => 22
	]
);

获取

获取数据,就像在PHP中使用MySQL一样

所有列
<?php
$users = $json_db->select( '*' )
	->from( 'users.json' )
	->get();
print_r( $users );
自定义列
<?php
$users = $json_db->select( 'name, state'  )
	->from( 'users.json' )
	->get();
print_r( $users );
WHERE语句

目前此WHERE语句作为AND操作符或OR操作符使用

<?php
$users = $json_db->select( 'name, state'  )
	->from( 'users.json' )
	->where( [ 'name' => 'Thomas' ] )
	->get();
print_r( $users );

// Defaults to Thomas OR Nigeria
$users = $json_db->select( 'name, state'  )
	->from( 'users.json' )
	->where( [ 'name' => 'Thomas', 'state' => 'Nigeria' ] )
	->get();
print_r( $users );

// Now is THOMAS AND Nigeria
$users = $json_db->select( 'name, state'  )
	->from( 'users.json' )
	->where( [ 'name' => 'Thomas', 'state' => 'Nigeria' ], 'AND' )
	->get();
print_r( $users );
带有正则表达式的WHERE语句

通过将GitlabDB::regex传递给WHERE语句,可以应用正则搜索。它可以用于在SQL中实现LIKEREGEXP_LIKE子句。

$users = $json_db->select( 'name, state' )
	->from( "users" )
	->where( array( "state" => GitlabDB::regex( "/ria/" )), GitlabDB::AND )
	->get();
print_r( $users );
// Outputs are rows which contains "ria" string in "state" column.
ORDER BY

感谢Tarun Shanker提供此功能。通过传递order_by()方法,结果将按列名和排序方法的两个参数进行排序 - GitlabDB::ASCGitlabDB::DESC

<?php
$users = $json_db->select( 'name, state'  )
	->from( 'users.json' )
	->where( [ 'name' => 'Thomas' ] )
	->order_by( 'age', GitlabDB::ASC )
	->get();
print_r( $users );

更新行

您也可以使用这些方法更新相同的JSON文件

<?php
$json_db->update( [ 'name' => 'Oji', 'age' => 10 ] )
	->from( 'users.json' )
	->where( [ 'name' => 'Thomas' ] )
	->trigger();

如果没有使用where()方法,它将更新所有行

删除行

<?php
$json_db->delete()
	->from( 'users.json' )
	->where( [ 'name' => 'Thomas' ] )
	->trigger();

如果没有使用where()方法,它将删除所有行

导出到MySQL

您可以使用此方法并将输出提供给SQL文件,将JSON导出回SQL文件

<?php
$json_db->to_mysql( 'users.json', 'users.sql' );

禁用CREATE TABLE

<?php
$json_db->to_mysql( 'users.json', 'users.sql', false );

导出到XML

Tarun Shanker还提供了一种将数据导出到XML文件的功能

<?php
if( $json_db->to_xml( 'users.json', 'users.xml' ) ) {
	echo 'Saved!';
}