rehhoff / database
一个简单的数据库库,用于抽象化数据库查询。
Requires
- php: >=5.6.0
This package is auto-updated.
Last update: 2024-09-18 01:23:27 UTC
README
这个库已迁移到GitHub!
我将不再维护Bitbucket版本。
请使用以下链接代替: https://github.com/allanrehhoff/database
DatabaseConnection类
由Allan Rehhoff编写
该仓库包含一个用于以高效和面向对象的方式查询数据库的类。
它还包含一些类,可以加快CMS / CRUD开发,并抽象化数据库查询。
只需将EntityType类复制到新文件中,并相应地重命名。
文件: Animal.php
<?php
class Animal extends Entity {
protected function getKeyField() { return "animal_id"; } // The column with your primary key index
protected function getTableName() { return "animals"; } // Name of the table to work with
/**
* Develop whatever functions your might need below.
*/
public function myFunction() {
}
}
?>
安装
使用composer安装: `
composer require rehhoff/database`
手动安装:`
<?php require "path/to/vendor/dir/database/autoload.php"; ?>`
本工具采用 WTFPL 许可。
使用Database类
本节假设您已具备PDO的基本知识。
(由于尚未有时间对文档进行适当的测试,尽管它可能看起来过时,请自行承担风险使用。)
\Database\Connection(); 类围绕PHP的PDO进行包装,因此您可以像通常一样在实例化的对象上调用所有内置的PDO函数。
除了\Database\Connection::query(); 方法外,它已被重载为更方便的方式和用法,因此它支持以下所有方法。
- \Database\Connection::query()
如果您只想执行简单的参数化查询,则此行就是您要找的。
这将返回一个自定义的\Database\Statement类,它也扩展了默认的PDOStatement类。
<?php \Database\Connection::getInstance()->query("UPDATE animals SET `extinct` = :value WHERE name = :name", ["value" => true, "name" => "Asian Rhino"]); ?>
- \Database\Connection::select()
具有返回值的简单查询将作为对象检索,第二个参数应为一个键值对数组。对于insert()、update()和delete()方法的第二个参数始终是WHERE子句。
以下查询
<?php \Database\Connection::getInstance()->select("animals"); ?>
<?php \Database\Connection::getInstance()->select("animals", ["name" => "Asian Rhino"]]); ?>
如果给定条件匹配任何行,则两者都将返回对象数组,否则结果集为false。
此方法也支持类似IN的请求。
<?php \Database\Connection::getInstance()->select("animals", ["name" => ["Asian Rhino", "Platypus"]]); ?>
<?php \Database\Connection::getInstance()->update("animals", ["extinct" => true], ["name" => "Asian Rhino"]); ?>
辅助工具(包装和辅助函数)
有一些可用的辅助函数,您可以使用它们以各种方式检索结果集,而不是执行查询然后调用fetch。
例如
<?php \Database\Connection::getInstance()->query("SELECT name FROM animals WHERE extinct = :extinct", ["extinct" => true)->fetchCol(); ?>
可以重写为
<?php \Database\Connection::getInstance()->fetchCol("animals", "name", ["extinct" => true]); ?>
其他辅助函数包括
- \Database\Connection::fetchCell();
- \Database\Connection::fetchField(); (fetchCell();的包装)
- \Database\Connection::fetchRow();
辅助工具不仅限于选择性查询。
- \Database\Connection::delete();
- \Database\Connection::update();
- \Database\Connection::replace();
- \Database\Connection::transaction();
数据库实体
为了更方便的数据操作,数据对象应扩展\Database\Entity类。
每个扩展\Database\DBObject的类都必须实现以下方法。
- getTableName(); // 此数据对象应存储数据的表。
- getKeyField(); // 存储数据的表中的主键。
每个数据对象在实例化时都接受一个可选参数[(int) primary_key],
用于识别是否应实例化新的数据对象或从表中加载已存在的行。
如果您想更改数据,请使用->set(array('column' => 'value'));
这允许你在对象上调用 ->save();,从而将数据保存到数据库中。
如果实例化时没有提供 primary_key 键参数,数据对象将作为新行保存。