sypherlev / blueprint
通过应用模式执行数据操作的数据库访问层(DBAL)包
Requires
- php: >=7.0
Requires (Dev)
- pds/skeleton: ~1.0
- phpunit/phpunit: 5.7.*
This package is auto-updated.
Last update: 2024-09-21 00:29:30 UTC
README
蓝图查询编译器
Blueprint是一个扩展的查询构建器,允许您随意定义、重用和覆盖查询代码块。
通过Composer安装
composer require sypherlev/blueprint
背景
我发现,在构建大量大型、数据驱动型应用的过程中,对象关系映射(ORM)大多数时候都阻碍了我的工作,而查询构建器则意味着要编写大量难以维护、复制粘贴且可能不安全的代码。由于使用ORM并不适合我想要做的事情,我开始使用查询构建器,并着手解决这些问题。最终的结果就是Blueprint。
Blueprint的核心是一个相当健壮的查询构建器,允许进行大多数常见的SQL操作,并提供原始SQL的回退。Blueprint通过添加额外的元素扩展,允许重用和配置查询部分,这最大限度地减少了复制粘贴的代码量,并且内置了一些安全功能。
- 模式:模式定义查询的表、列和连接,并且主表及其列在INSERT/UPDATE查询中使用时充当白名单。
- 过滤器:过滤器定义额外的WHERE子句以及查询的limit和orderBy子句。
- 转换:转换是一个简单的闭包,它修改INSERT/UPDATE查询中传入的数据,以及SELECT查询中返回的数据。
模式、过滤器和转换通常在扩展Blueprint的类的构造函数中定义,然后在特定方法中按需使用。
构建器生成的所有查询都使用预处理语句,还有一个额外的函数raw(),可以接受任何带或不带绑定的任意SQL字符串。
它目前支持MySQL/MariaDB/PostgreSQL,具有接口定义,因此可以添加更多。模式/过滤器设置只能定义单个查询的结果,这意味着定义一对一或多对多关系需要在初始查询结果之后使用转换来追加所需的数据。
注意:没有创建或修改表的功能,目前也没有添加此功能的计划。Blueprint假设您已经具备相当扎实的SQL知识,并且您已在外部创建模式或正在与现有的数据库一起工作。
由于Blueprint旨在管理和处理大量复杂的关系数据块,因此不建议用于基本的CRUD操作。请查看Propel或RedBean。