适用于MySql和MariaDB的轻量级ORM
v0.0.6
2020-08-07 05:49 UTC
Requires
- php: ^7.1
- ext-mysqli: *
Requires (Dev)
- phpstan/phpstan: ^0.12
- phpunit/phpunit: ^7.5
- squizlabs/php_codesniffer: 3.*
- vimeo/psalm: ^3.0
This package is auto-updated.
Last update: 2024-09-29 03:10:22 UTC
README
MyDB
通过Composer安装
命令行
composer require texlab/mydb
示例 composer.json 文件
{
"require": {
"texlab/mydb": "^0.0.5"
}
}
类图
示例数据库
CREATE DATABASE IF NOT EXISTS `mydb`; USE `mydb`; CREATE TABLE IF NOT EXISTS `table1` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `description` varchar(200) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
使用示例
<?php require 'vendor/autoload.php'; use TexLab\MyDB\DbEntity; use TexLab\MyDB\DB; $link = DB::link([ 'host' => 'localhost', 'username' => 'root', 'password' => '', 'dbname' => 'mydb' ]); $table1 = new DbEntity('table1', $link); echo json_encode($table1->get());
CRUD
添加数据
$table1->add([ 'name' => 'Peter', 'description' => 'Director' ]);
读取数据
$table1->get();
或具有给定ID的一行
$table1->get(['id' => 3]);
更新数据
$table1->edit(['id' => 2], [ 'name' => 'Alex', 'description' => 'Manager' ]);
数据删除
$table1->del(['id' => 1]);
自定义查询
echo json_encode($table1->runSQL("SELECT * FROM table1"));
查询构建器
echo json_encode( $table1 ->reset() ->setSelect('id, name') ->setWhere("name like 'A%'") ->get() );
$table1 ->reset() ->setSelect('name, description') ->setWhere("description = 'Manager'") ->setOrderBy('name'); echo json_encode( $table1->get() ); $table1->setSelect('*'); echo json_encode( $table1->get() );
错误处理
<?php require '../vendor/autoload.php'; use TexLab\MyDB\DB; use TexLab\MyDB\Runner; $runner = new Runner( DB::link( [ 'host' => 'localhost', 'username' => 'root', 'password' => 'root', 'dbname' => 'test_db' ] ) ); $runner->setErrorHandler( function ($mysqli, $sql) { //put your error handling code here print_r([$mysqli->error, $mysqli->errno, $sql]); } ); $runner->runSQL("SELECT * FROM unknown_table");
结果
Array
(
[0] => Table 'test_db.unknown_table' doesn't exist
[1] => 1146
[2] => SELECT * FROM unknown_table
)
分页
echo $table1 ->setPageSize(2) ->pageCount();
echo json_encode($table1->setPageSize(2)->getPage(1));