phphleb / xdorm
HLEB 微型框架的 XD ORM
Requires
- php: >=7.0.0
- ext-ctype: *
- ext-pdo: *
This package is auto-updated.
Last update: 2024-03-24 11:09:08 UTC
README
HLEB 微型框架的 XD ORM
如果您需要安装框架,请使用以下链接: github.com/phphleb/hleb
HLEB
HLEB 微型框架的一个显著特点是代码的极简性和工作速度。选择此框架可以让您以最小的时间成本启动一个完整的产品,并吸引文档;它简单、直观且快速。同时,它解决了典型的任务,如路由、将动作转移到控制器、模型支持,以及基本的 MVC 实现。这是快速启动应用程序所需的最小元素。
XD ORM
实际上,XD ORM 是 PHP PDO 上的一个外壳,专门为 HLEB 框架设计。它简单且符合微型框架的通用目的。
XD ORM 不包含在框架的原始配置中,因此必须将其从 github.com/phphleb/xdorm 存储库的 vendor/phphleb 库文件夹复制过来,或使用 Composer 安装。
$ composer require phphleb/xdorm
连接到项目
// File /app/Optional/MainConnect.php ... [ "XdORM\XD" => "vendor/phphleb/xdorm/XD.php" ] ...
您可以为所选的 DBMS(任何受 PDO 支持的)创建基本 SQL 风格的查询。在此 ORM 中实现的主要任务是使查询字符串成为安全的查询字符串。
如果您了解 SQL 语法,可以直接开始编写模型。此语法对于命令的解析如下
use XdORM\XD; XD::any(); // 'ANY' XD::any_words(); // 'ANY_WORDS' XD::anyWords(); // 'ANY WORDS' XD::any()->words(); // 'ANY WORDS'
对于表名,只需将它们传递为一个数组即可
$query = XD::select(['id', 'name', 'email'])->from(['users']); // SELECT `id`, `name`, `email` FROM `users`;
值按原样插入,但所有字符串值(除 SQL 语句和特殊字符外)都将使用内置的 PDO 进行检查
$query = XD::select('*')->from(['users'])->where(['name'], '!=', "d'Artanyan")->and(['id'], '=', 1)->limit(1); // SELECT * FROM `users` WHERE `name` != 'd\'Artanyan' AND `id` = 1 LIMIT 1; $query = XD::select('*')->from(['users'])->where(['id'])->in('(', 15, ',', 43, ',', 60, ',', 71, ')'); // SELECT * FROM `users` WHERE `id` IN ( 15, 43, 60, 71);
要传递值数组,有一个特殊的方法 setList()
$ids = [15, 43, 60, 71]; $query = XD::select('*')->from(['users'])->where(['id'])->in('(', XD::setList($ids), ',', 156, ',', 200, ')'); // SELECT * FROM `users` WHERE `id` IN ( 15, 43, 60, 71, 156, 200);
查询部分的连接可以在返回的 XD 对象之间以任何顺序进行
$select_user_id = XD::select(['id'])->from(['users'])->where(['id'], '=', 15); $query = XD::select('*')->from(['tasks'])->where(['user_id'], '=', '(', $select_user_id, ')');
或者这样
$q = XD::select('*')->from(['users']); $query = $q->limit(100); // SELECT * FROM `users` LIMIT 100; // or (but not the "and", as there will be a concatenation with the previous action) $query = $q->leftJoin(['tasks'])->on(['users.id'], '=', ['tasks.user_id']); // SELECT * FROM `users` LEFT JOIN `tasks` ON `users`.`id` = `tasks`.`user_id`;
现在您需要运行此查询并获取结果(如果需要的话)。对于返回数据的查询,有以下方法存在
$result = $query->getSelectOne(); // Getting one row in the named array. $result = $query->getSelectValue(); // Getting one value. $result = $query->getSelect(); // Returns an array of rows as named arrays. $result = $query->getSelectAll(); // Returns an array of objects whose values can be obtained by the fields of the objects.
$result = XD::selectCount_('(*)')->from(['users'])->getSelectValue(); // SELECT COUNT(*) FROM `users`;
对于所有其他不返回结果集的查询,只需添加 run() 执行查询即可。
XD::update(['users'])->set(['name'], '=', 'admin')->where(['id'], '=', 1)->run(); XD::dropTable(['users'])->run();
在异常情况下,可以使用返回 PDOStatement 对象的 execute() 方法来查询,然后根据 PDO 文档对后者进行进一步操作。
使用多个连接
所需的 "dbase.config.php" 文件最初不存在,必须从 "database" 目录中的 "database/default.dbase.config.php" 文件复制过来。如果 XD ORM 未连接到 HLEB 框架,则可以使用常量 XDDB_PATH_TO_CONFIG 指定配置文件的完整路径(文件模板位于“templates”文件夹中)。
配置文件可能包含各种数据库连接的变体;默认情况下,使用 HLEB_TYPE_DB 常量指定的连接名称。要执行配置文件中指定的其他数据库的查询,必须在查询执行方法中指定其名称。例如:run('postgresql.first')、getSelectOne('postgresql.second') 或 getSelect('mysql.name')。查询将以指定的设置执行。