Download the PHP package aaronjan/academe without Composer
On this page you can find all versions of the php package aaronjan/academe. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download aaronjan/academe
More information about aaronjan/academe
Files in aaronjan/academe
Package academe
Short Description Academe is an awesome data-mapper for MySQL & MongoDB (maybe more), support Laravel & natvie PHP project.
License Apache-2.0
Informations about the package academe
Academe
功能特性
Academe 是一个实用的 Data Mapper,有以下特性:
-
可以单独使用,也可以搭配
Laravel
使用 -
支持字段出、入库时进行转换(
Blueprint
中的Cast Rule
),例如将 MySQL 的datetime
类型自动转化为Carbon
对象。支持自定义扩展 -
简单直观的
Query Builder
,IDE提示友好 -
查询条件和数据库连接分离,支持序列化
-
支持多种数据关系定义:一对一、一对多、多对多(可跨数据库类型关联)
-
可以自定义数据实体对象,想用
贫血模型
还是充血模型
不受限制 - 以上功能同时支持 MySQL、PostgreSQL(基于
DBAL
)和 MongoDB(基于mongodb/mongodb
)
安装
需要mongodb
扩展支持(>= 1.3
)。
使用Composer
安装:
快速上手
安装
Academe 自带 Laravel 支持,以下以 Laravel 使用为例。
安装好之后,执行命令导入配置文件到 config/academe.php
:
配置文件默认兼容 Laravel .env
中的数据库配置。
如果你的 Laravel 版本低于 5.5
,那么还需要将 AcademeServiceProvider
加入到 config/app.php
中。
生成第一个 Blueprint
你需要使用 Blueprint
来定义和使用数据。
例如有一个 MySQL 表:
运行命令生成 Blueprint
:
说明:MySQL 的 table 或者 MongoDB 的 Collection 在 Academe 中统一称作 Subject
。
打开刚生成的 Blueprint(默认路径:app/Academe/Blueprints/User
),增加字段类型配置(位于 castRules()
):
编写查询
定义好 Blueprint 之后,就可以通过 依赖注入
的方式拿到 Mapper
来进行和数据库之间的交互了:
所有数据操作都可以通过调用 Mapper
上的 query()
方法完成(所有数据库通用),部分 MongoDB 专有方法可以通过 queryAsMongoDB()
完成。
独立生成查询条件
除了通过 Mapper
上的 query()
方法组织查询条件,还可以通过 Writer
生成条件,这适用于很多需要由某个函数生成部分或全部查询条件的情况:
Group
Academe 同样支持 group by
类统计查询(MongoDB 同样支持),使用方式如下:
数据关系
数据关系的定义同样是写在 Blueprint 中的:
查询关系数据的方式和 Laravel 基本一致:
Academe 目前支持定义两种数据关系:一对一、一对多和多对多,其中又分为几种变体:
一对一
HasOne
:一对一
一对多
-
BelongsTo
:多对一,主、外键形式 -
HasMany
:一对多,主、外键形式 -
WithMany
:一对多,根数据上的关系字段为数组形式(MySQL 上为 JSON 化的数组),子数据依然是定义外键 WithManyPredefined
:一对多,不同于WithMany
的在于子数据不是来自数据库,而是预先定义好的数组结构(后期也许会考虑通过新的Connection
实现)
多对多
BelongsToMany
:多对多,通过中间关系表关联,和 Laravel 一致
多对多因为需要一张中间表,所以也需要定义中间表的 Blueprint:Bond
。运行 Artisan 命令进行生成:
生成文件如下:
事务
事务是围绕 Transaction
对象展开的,以下是实例:
事务操作目前对 MongoDB 是无效的,等到 MongoDB 4.0
正式发布之后会考虑提供支持。
MongoDB
$elemMatch
TODOs
-
单元测试
- 查询关系数据时传递父级的事务设置
Credits
All versions of academe with dependencies
doctrine/dbal Version ~2.5
mongodb/mongodb Version >=1.3,<1.5
nesbot/carbon Version >=1.0
brick/math Version >=0.5,<0.8