h2lsoft/db-manager
PDO查询管理包装器
v1.2.2
2024-05-28 16:01 UTC
Requires
- ext-pdo: *
README
PDO包装器,用于简化数据库查询。它提供了一个简单的方法来创建、检索、更新和删除记录。
要求
- php >= 7.3
- php PDO扩展
安装
直接通过Composer安装
$ composer require h2lsoft/db-manager
基本用法
use \h2lsoft\DBManager; $DBM = new DBManager\DBManager(); // soft mode is activated by default $DBM->connect('mysql', 'localhost', 'root', '', 'mydatabase'); // execute simple query with binding $sql = "SELECT Name, SurfaceArea FROM Country WHERE Continent = :Continent AND deleted = 'NO' ORDER BY SurfaceArea DESC LIMIT 3"; $results = $DBM->query($sql, [':Continent' => 'Asia'])->fetchAll(); // or use short version $sql = $DBM->select("Name, SurfaceArea") ->from('Country') ->where("Continent = :Continent") ->orderBy('SurfaceArea DESC') ->limit(3) ->getSQL(); $results = $DBM->query($sql, [':Continent' => 'Asia'])->fetchAll(); // or imbricated version $results = $DBM->select("Name, SurfaceArea") ->from('Country') ->where("Continent = :Continent") ->orderBy('SurfaceArea DESC') ->limit(3) ->executeSql([':Continent' => 'Asia']) ->fetchAll(); // insert $values = []; $values['Name'] = "Agatha Christies"; $values['Birthdate'] = "1890-10-15"; $ID = $DBM->table('Author')->insert($values); // update $values = []; $values['Name'] = "Agatha Christies"; $affected_rows = $DBM->table('Author')->update($values, $ID); # you can put direct ID or you can use where clause // delete $affected_rows = $DBM->table('Author')->delete(["ID = ?", $ID]);
软模式
软模式默认启用,允许在操作如:Insert
、Update
、Delete
等记录上自动添加时间戳和作者。软模式是可选的,但推荐使用,您可以在构造函数中禁用它或使用$DBM->SoftMode(0);
软模式允许您通过将标志字段deleted
设置为yes
来保持数据安全,而不实际删除记录。这在意外删除行时检索数据非常有用。
您可以使用魔术方法$DBM->table('my_table')->addSoftModeColumns()
,这将自动添加软模式列
deleted
(enum => yes, no)created_at
(datetime)created_by
(varchar)updated_at
(datetime)updated_by
(varchar)deleted_at
(datetime)deleted_by
(varchar)
分页组件
$sql = $DBM->select("*") ->from('Country') ->where("Continent = :Continent") ->getSQL(); $params = [':Continent' => 'Asia']; $current_page = 1; // return a complete array paginate $pager = $DBM->paginate($sql, $params, $current_page, 20);
[
[total] => 51,
[per_page] => 20,
[last_page] => 3,
[current_page] => 1,
[from] => 1,
[to] => 20,
[page_start] => 1,
[page_end] => 3,
[data] => [
....
]
]
有用方法
// get a record by ID, you can use multiple ID by array $record = $DBM->table('Country')->getByID(10); // multiple ID $records = $DBM->table('Country')->getByID([12, 10, 55]);
许可证
MIT。请参阅完整的许可证。