darkterminal / gitlab-json-db
一个PHP类,可以将JSON文件作为数据库读取。用于通过Gitlab API创建示例数据库,灵感来源于donjajo/jsondb
v1.1
2022-03-14 06:09 UTC
Requires
- league/flysystem: ^2.4.3
- royvoetman/flysystem-gitlab-storage: ^2.0.4
Requires (Dev)
- phpunit/phpunit: ^7
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中实现LIKE或REGEXP_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::ASC和GitlabDB::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!'; }