memran/marwadb

PHP PDO Mysql 数据库库

0.0.2 2020-06-11 21:51 UTC

This package is auto-updated.

Last update: 2024-09-30 01:35:54 UTC


README

Build Status Total Downloads License Dependents

PHPStan Enabled

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)。有关更多信息,请参阅 许可证文件