myth/db

基于 CodeIgniter 4 构建的简单数据库抽象层。

dev-develop 2024-01-30 14:45 UTC

This package is auto-updated.

Last update: 2024-08-30 01:23:49 UTC


README

Myth:db 是对 CodeIgniter 4 可能的新数据库层的探索。它添加了一个反射型数据映射器,使获取数据尽可能简单。虽然在后台使用模型和实体,但它几乎无需设置或代码生成即可使用。

示例

在表格中获取所有结果

基本用法是使用 map() 方法,它接受您要操作的表名。然后创建一个通用模型,分配表名,检查表以填充模型属性,并返回模型。由于您有了模型,因此您可以访问模型方法,如 findAll(),以及查询构建器方法,如 where()

$users = db()->map('users')->findAll();

默认情况下,这将返回一个对象数组,每个对象对应表中的一行。如果您想更改返回类型,可以使用 returns() 方法传入类名、arrayobject

$users = db()->map('users')->returns('array')->findAll();
$users = db()->map('users')->returns(\App\Entities\User::class)->findAll();

自定义实体

您可以创建自己的实体,映射器将自动以该格式返回结果。这完全基于约定。默认情况下,它会在 App\Entities 命名空间中寻找名为 User 的实体。实体的名称是表名的单数、PascalCase 版本。

// If App\Entities\User exists, all results will be returned as User objects
// otherwise, each record will be returned as an object.
$users = db()->map('users')->findAll();

// Would return each result as instance of App\Entities\ZodiacSign, if it exists.
$signs = db()->map('zodiac_signs')->findAll();

自定义模型

您还可以创建自己的模型,映射器将自动使用该模型而不是默认模型。这同样基于约定。它会寻找名为表名 PascalCase 单数版本、后缀为 Model 的模型。

// Will look for App\Models\UserModel
$users = db()->map('users')->findAll();

// Will look for App\Models\ZodiacSignModel
$signs = db()->map('zodiac_signs')->findAll();

注意:返回可迭代游标以更好地节省内存?

待办事项:将 findX 结果作为集合返回?