lusito/notorm

此包已被弃用,不再维护。未建议替代包。

NotORM 是一个用于简单处理数据库数据的 PHP 库。

0.8 2019-06-20 17:58 UTC

This package is auto-updated.

Last update: 2024-06-22 05:31:34 UTC


README

NotORM - 从数据库中简单读取数据

双许可(任选其一)

License License

这是一个基于 http://www.notorm.com/(原作者 Jakub Vrana,版权 2010)的分支。

NotORM 是一个用于简单处理数据库数据的 PHP 库。最有趣的功能是,它非常容易处理表关系。整体性能也非常重要,NotORM 实际上可以比原生驱动程序运行得更快。

关于此分支

  • 原始代码已多年未维护。
  • 我需要一个 PSR-4 版本的它
  • 我稍微重构了代码
  • 我将代码移植到 PHP 7.1
  • 我添加了一些额外的功能
  • 使用方式基本保持不变

要求

  • PHP >= 7.1
  • 任何由 PDO 支持的数据库(已测试 MySQL、SQLite、PostgreSQL、MS SQL、Oracle)

安装

通过 composer 安装

composer require lusito/notorm:dev-master

将自动加载器包含在您的 php 脚本中,除非您已经这样做

require __DIR__ . '/vendor/autoload.php';

使用

设置与原始 NotORM 稍有不同。首先,您需要创建一个 Config 对象

use Lusito\NotORM\ConfigBuilder;

$dsn = 'mysql:host=' . $hostname . ';dbname=' . $database;
$config = (new ConfigBuilder($dsn, $username, $password))->build();

ConfigBuilder 允许进行各种设置。我们稍后会谈到。

之后,您可以使用经典方式或我提出的新方式。

经典方式

use Lusito\NotORM\Database;

$db = new Database($config);

foreach ($db->application()->order("title") as $application) { // get all applications ordered by title
    echo "$application[title]\n"; // print application title
    echo $application->author["name"] . "\n"; // print name of the application author
    foreach ($application->application_tag() as $application_tag) { // get all tags of $application
        echo $application_tag->tag["name"] . "\n"; // print the tag name
    }
}

新方式使用静态类

use Lusito\NotORM\DB;

DB::setConfig($config);

foreach (DB::application()->order("title") as $application) { // get all applications ordered by title
    // ...
}

这种新方法可以帮助您避免在需要数据库实例的每个类中传递它(或者甚至全局设置它)。

使用 DB::hasConfig() 检查是否已设置数据库。

新方法的不同之处

操作 经典
获取表 $db->table_name(...$where) DB::table_name(...$where)
通过名称获取表 $db->__call('table_name', ...$where) DB::getTable('table_name', ...$where)
通过 id 获取行 $db->table_name[$id] DB::getRow('table_name', $id)
设置配置值(例如 debug、debugTimer、freeze、rowClass 或 jsonAsArray) $db->debug = true; DB::setConfigValue('debug', true);
开始事务 $db->transaction = 'BEGIN'; DB::beginTransaction()
提交事务 $db->transaction = 'COMMIT'; DB::commitTransaction()
回滚事务 $db->transaction = 'ROLLBACK'; DB::rollbackTransaction()

许可

代码是双许可(任选其一)