myth / db
基于 CodeIgniter 4 构建的简单数据库抽象层。
dev-develop
2024-01-30 14:45 UTC
Requires
- php: ^8.1
Requires (Dev)
- codeigniter4/framework: ^4.3.5
- friendsofphp/php-cs-fixer: ^3.48
- phpunit/phpunit: ^10.5
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()
方法传入类名、array
或 object
。
$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 结果作为集合返回?