anax / database-query-builder
Anax 数据库查询构建模块,通过方法创建查询。
Requires
- php: >=7.2
- anax/database: ^2
Requires (Dev)
- phpunit/phpunit: ^7
README
Anax 数据库查询构建模块作为 anax/database
的扩展,允许使用方法而不是 SQL 查询数据库。
此模块用于实现 Database Active Record 模块 anax\database-active-record
。
该模块使用 MySQL 和 SQLite 进行测试。
目录
安装
您可以使用 composer 从 anax/database-query-builder
在 Packagist 上安装此模块。
composer require anax/database-query-builder
然后,您可以复制默认配置文件作为开始。
# In the root of your Anax installation
rsync -av vendor/anax/database-query-builder/config .
开发
要作为开发者工作,您需要克隆存储库并通过 make 安装本地环境。然后,您可以运行单元测试。
make install
make test
类、接口、特质
以下是一些类、接口和特质。
以下部分与 SQL 查询构建器的功能相关。
异常
所有异常都在命名空间 Anax\DatabaseQueryBuilder\Exception\
中。以下存在以下异常,可能会抛出。
DI 服务
数据库查询构建器在 $di
内部作为框架服务创建。以下是通过 config/di/dbqb.php
创建数据库查询构建器服务的示例。
/** * Configuration file for database query builder service. */ return [ // Services to add to the container. "services" => [ "dbqb" => [ "shared" => true, "callback" => function () { $obj = new \Anax\DatabaseQueryBuilder\DatabaseQueryBuilder(); // Load the configuration files $cfg = $this->get("configuration"); $config = $cfg->load("database"); // Set the database configuration $connection = $config["config"] ?? []; $db->setOptions($connection); $db->setDefaultsFromConfiguration(); return $db; } ], ], ];
作为框架服务访问
您可以将模块作为框架服务访问并用作普通数据库服务。
$sql = "SELECT * FROM movie;"; $db = $di->get("dbqb"); $db->connect(); $res = $db->executeFetchAll($sql);
这是由于 \Anax\DatabaseQueryBuilder\DatabaseQueryBuilder
类扩展了数据库类 \Anax\Database\Database
。
基本用法
这是查询构建器的基本用法。
您首先从查询构建器类创建数据库对象并将其连接到数据库。
$this->db = new DatabaseQueryBuilder([ "dsn" => "sqlite::memory:", ]); $this->db->setDefaultsFromConfiguration(); $this->db->connect();
这基本上等同于从 $di 容器检索类。
现在您可以创建一个表。
// Create a table $this->db->createTable( 'user', [ 'id' => ['integer', 'primary key', 'not null'], 'age' => ['integer'], 'name' => ['varchar(10)'] ] )->execute();
表已创建。
现在您可以向表中插入行。
$this->db->insert( "user", [ "age" => 3, "name" => "three", ] )->execute(); $last = $this->db->lastInsertId(); // 1 $rows = $this->db->rowCount(); // 1
现在您可以查询表。
$res = $this->db->select("*") ->from("user") ->where("id = 1") ->execute() ->fetch(); $res->id; // 1 $res->age; // 3 $res->name; // "three"
这是基本用法,其思想是使用类方法创建 SQL 查询,并在幕后构建实际的 SQL 查询。
依赖
此模块依赖于并扩展了数据库抽象层 anax\database
。
模块通常在 Anax 安装中使用,但也可以在不使用 Anax 的情况下使用。
许可
此软件携带 MIT 许可。有关详细信息,请参阅 LICENSE.txt。
.
..: Copyright (c) 2013 - 2018 Mikael Roos, mos@dbwebb.se