PHPackages                             aaronjan/academe - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. aaronjan/academe

AbandonedArchivedLibrary[Database &amp; ORM](/categories/database)

aaronjan/academe
================

Academe is an awesome data-mapper for MySQL &amp; MongoDB (maybe more), support Laravel &amp; natvie PHP project.

v0.27.4(6y ago)49.3k1[2 issues](https://github.com/AaronJan/Academe/issues)Apache-2.0PHPPHP &gt;=7.0.0

Since Feb 23Pushed 6y ago2 watchersCompare

[ Source](https://github.com/AaronJan/Academe)[ Packagist](https://packagist.org/packages/aaronjan/academe)[ RSS](/packages/aaronjan-academe/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (5)Dependencies (8)Versions (88)Used By (0)

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`安装：

```
$ composer require aaronjan/academe

```

快速上手
----

[](#快速上手)

### 安装

[](#安装-1)

Academe 自带 Laravel 支持，以下以 Laravel 使用为例。

安装好之后，执行命令导入配置文件到 `config/academe.php`：

```
$ php artisan vendor:publish --provider=Academe\\Laravel\\AcademeServiceProvider

```

配置文件默认兼容 Laravel `.env` 中的数据库配置。

如果你的 Laravel 版本低于 `5.5`，那么还需要将 `AcademeServiceProvider` 加入到 `config/app.php`中。

### 生成第一个 `Blueprint`

[](#生成第一个-blueprint)

你需要使用 `Blueprint` 来定义和使用数据。

例如有一个 MySQL 表：

```
CREATE TABLE `user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(191) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```

运行命令生成 `Blueprint`：

```
$ php artisan academe:make:blueprint User --primary=id --subject=user

```

*说明：MySQL 的 table 或者 MongoDB 的 Collection 在 Academe 中统一称作 `Subject`。*

打开刚生成的 Blueprint（默认路径：`app/Academe/Blueprints/User`），增加字段类型配置（位于 `castRules()`）：

```
