memran / marwadb
PHP PDO Mysql 数据库库
0.0.2
2020-06-11 21:51 UTC
Requires
- php: >= 7.2.0
Requires (Dev)
- phpunit/phpunit: 8
- symfony/var-dumper: 4.4.x-dev
This package is auto-updated.
Last update: 2024-09-30 01:35:54 UTC
README
MarwaDB for MarwaPHP 框架
MarwaDB 是一个基于 PDO 的 MarwaPHP 框架的 PHP MySQL 库。它强大、快速且简单。它是一个带有 PDO 连接的查询构建器。没有使用外部库。它是一个专注于速度、简单性和可扩展性的原生简单 PHP MySQL 库。函数名称与 Laravel Eloquent Builder 相同。
只需安装软件包,添加配置即可使用!
要求
- PHP >= 7.2.0
- PDO 扩展
功能
- 易于创建灵活的查询
- 支持与 PDO 兼容的任何数据库
- 用少量代码构建复杂查询
- 速度极快
安装
此软件包可以通过 Composer 安装和 PSR-4 自动加载,方法如下:
composer require memran/marwadb:dev-master
使用
创建一个新的 DB 类,并将配置数组传递给 MarwaDB
require_once('../vendor/autoload.php'); use MarwaDB\DB; $config = [ 'default'=> [ 'driver' => "mysql", 'host' => "localhost", 'port' => 3306, 'database' => "test", 'username' => "root", 'password' => "1234", 'charset' => "utf8mb4", ], 'write'=> [ 'driver' => "mysql", 'host' => "localhost", 'port' => 3306, 'database' => "test", 'username' => "root", 'password' => "1234", 'charset' => "utf8mb4", ], 'read'=> [ 'driver' => "mysql", 'host' => "localhost", 'port' => 3306, 'database' => "test", 'username' => "root", 'password' => "1234", 'charset' => "utf8mb4", ] ]; $db = new DB($config);
DB 原始查询
$result = $db->raw('SELECT * FROM system WHERE id = ?',[1]); dump($result)
或者,您还可以使用以下函数
$result = $db->rawQuery('SELECT * FROM system WHERE id = ?',[1]); dump($result)
获取总结果
dump("Total Rows Returned >>> ".$db->rows());
PDO 服务器状态
$db->status();
指定查询的连接名称
$result=$db->connection('sqlSrv')->rawQuery('SELECT * FROM users WHERE id = ?', [1]); dump($result);
更改结果检索模式
$result=$db->connection('sqlSrv')->setFetchMode('array')->rawQuery('SELECT * FROM users WHERE id = ?', [1]); dump($result);
事务
$db->transaction(function($db){ $db->rawQuery('DELETE FROM users WHERE id = ?', [4]); dump($db->rows()); });
不带占位符的简单选择查询
$result = $db->select('SELECT * FROM users'); dump($result);
带占位符
$result=$db->select('SELECT * FROM users WHERE id = ?', [1]); dump($result);
PDO 绑定参数
$result = $db->raw("SELECT * FROM users WHERE id = :id", ['id' => '1']); dump($result);
获取连接驱动
dump($db->getDriver());
从表中检索所有行
$db->table('users')->get();
从表中检索单行/列
$db->table('users')->where('name', 'Marwa')->first()->get();
从表中检索列值列表
$db->table('roles')->select(['title', 'name'])->get();
聚合函数
$users = $db->table('users')->count()->get(); $price = $db->table('orders')->max('price')->get(); $price = $db->table('orders')->avg('price')->get(); $price = $db->table('orders')->min('price')->get();
选择
指定选择子句
$users = $db->table('users')->select(['name', 'email as user_email'])->get();
distinct 方法允许您检索不同的结果
$users = $db->table('users')->distinct()->get();
您可能添加列
$result =$db->table('users')->addSelect('age')->get();
连接
内连接子句
$users = $db->table('users') ->join('contacts', 'users.id', '=', 'contacts.user_id') ->join('orders', 'users.id', '=', 'orders.user_id') ->select('users.*', 'contacts.phone', 'orders.price') ->get();
左连接/右连接子句
$users = $db->table('users') ->leftJoin('posts', 'users.id', '=', 'posts.user_id') ->get(); $users = $db->table('users') ->rightJoin('posts', 'users.id', '=', 'posts.user_id') ->get();
联合
$first = $db->table('users') ->whereNull('first_name'); $users = $db->table('users') ->whereNull('last_name') ->union($first) ->get();
WHERE 子句
简单 WHERE 子句
$users = $db->table('users')->where('votes', '=', 100)->get();
当编写 WHERE 子句时,您可以使用各种其他运算符
$users = $db->table('users') ->where('votes', '>=', 100) ->get(); $users = $db->table('users') ->where('votes', '<>', 100) ->get(); $users = $db->table('users') ->where('name', 'like', 'T%') ->get();
OR 语句
$users = $db->table('users') ->where('votes', '>', 100) ->orWhere('name', 'John') ->get();
附加 WHERE 子句
whereBetween / orWhereBetween
$users = $db->table('users') ->whereBetween('votes', [1, 100]) ->get();
whereNotBetween / orWhereNotBetween
$users = $db->table('users') ->whereNotBetween('votes', [1, 100]) ->get();
whereIn / whereNotIn / orWhereIn / orWhereNotIn
$users = $db->table('users') ->whereIn('id', [1, 2, 3]) ->get();
$users = $db->table('users') ->whereNotIn('id', [1, 2, 3]) ->get();
whereNull / whereNotNull / orWhereNull / orWhereNotNull
$users = $db->table('users') ->whereNull('updated_at') ->get();
$users = $db->table('users') ->whereNotNull('updated_at') ->get();
whereDate / whereMonth / whereDay / whereYear / whereTime
$users = $db->table('users') ->whereDate('created_at', '2016-12-31') ->get();
$users = $db->table('users') ->whereMonth('created_at', '12') ->get();
$users = $db->table('users') ->whereDay('created_at', '31') ->get();
$users = $db->table('users') ->whereYear('created_at', '2016') ->get();
$users = $db->table('users') ->whereTime('created_at', '=', '11:20:45') ->get();
WHERE EXISTS 子句
$users = $db->table('users') ->whereExists(function ($query) { $query->select([1]) ->from('users') ->where('id', '=','1'); }) ->get();
orderBy
$users = $db->table('users') ->orderBy('name', 'desc') ->get();
最新/最旧
$user = $db->table('users') ->latest() ->first() ->get();
随机顺序
$randomUser = $db->table('users') ->inRandomOrder() ->first() ->get();
groupBy / having
$users = $db->table('users') ->groupBy('account_id') ->having('account_id', '>', 100) ->get();
skip / take
$users = $db->table('users')->skip(10)->take(5)->get();
插入
$db->table('users')->insert( ['email' => 'test@test.com', 'active' => 0] );
插入多条记录
$db->table('users')->insert([ ['email' => 'test@test.com', 'active' => 0], ['email' => 'test1@test.com', 'active' => 1] ]);
更新
$result= $db->table('users') ->where('id', 1) ->update(['active' => 1]);
更新或插入
$db->table('users') ->updateOrInsert( ['email' => 'test@test.com', 'name' => 'Marwa'], //data for update ['active' => '1] // data for insert );
删除
$db->table('users')->delete(); $db->table('users')->where('active', '=', 0)->delete();
调试
//It will debug and die $db->table('users')->where('active', '=', 1)->dd(); //it will only debug $db->table('users')->where('active', '=', 1)->dump();
启用 SQL 日志记录
$db->enableQueryLog(); $db->table('users')->where('active', '=', 1)->get(); dump($db->getQueryLog());
打印 SQL 查询
dump($db->table('users')->where('active', '=', 1)->toSql());
贡献
有关详细信息,请参阅 CONTRIBUTING
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件