lusito / notorm
此包已被弃用,不再维护。未建议替代包。
NotORM 是一个用于简单处理数据库数据的 PHP 库。
0.8
2019-06-20 17:58 UTC
Requires
- php: ^7.1.0
Requires (Dev)
- phpunit/phpunit: ^8
This package is auto-updated.
Last update: 2024-06-22 05:31:34 UTC
README
NotORM - 从数据库中简单读取数据
双许可(任选其一)
这是一个基于 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() |
许可
代码是双许可(任选其一)