rehhoff/database

一个简单的数据库库,用于抽象化数据库查询。

v2.4.1 2018-09-24 21:03 UTC

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(); 方法外,它已被重载为更方便的方式和用法,因此它支持以下所有方法。

  1. \Database\Connection::query()

如果您只想执行简单的参数化查询,则此行就是您要找的。
这将返回一个自定义的\Database\Statement类,它也扩展了默认的PDOStatement类。

<?php \Database\Connection::getInstance()->query("UPDATE animals SET `extinct` = :value WHERE name = :name", ["value" => true, "name" => "Asian Rhino"]); ?>
  1. \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 键参数,数据对象将作为新行保存。