PHPackages                             agxmaster/easy-model - 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. agxmaster/easy-model

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

agxmaster/easy-model
====================

EasyModel

012PHP

Since Aug 31Pushed 9y ago1 watchersCompare

[ Source](https://github.com/agxmaster/easymodel)[ Packagist](https://packagist.org/packages/agxmaster/easy-model)[ RSS](/packages/agxmaster-easy-model/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependenciesVersions (1)Used By (0)

EasyModel
=========

[](#easymodel)

- Automatic query generation
- 目前只支持laravel 框架 后续可通过扩展 ModelInterface 进行各种支持

\##example 文档细节繁琐可以直接看例子

定义一个model 继承EasyModel

```
namespace App\Models;

use Agxmaster\EasyModel\EasyModel;
class Pirates extends EasyModel
{
    public $table  = 'pirates';
    public $primaryKey = 'piratesid';
}
```

定义仓库

```
namespace App\Repositories;
use Agxmaster\EasyModel\EasyModel;
use App\Models\Menu;
use App\Models\Pirates;

class PiratesRepository
{
	function test(){
		$menu = new Menu();
		$pirates = new Pirates();
		$easy = new EasyModel();
	}
}
```

以下实例都在仓库中

\##查询示例

#### 1.使用model单表根据主键查询

[](#1使用model单表根据主键查询)

```
所有的查询开头必须是get后面接各种参数
get后面不接参数但是方法传参会用model里面primaryKey属性查询

```

```
$r = $pirates->get(1);
```

output:

```
 Array
 (
	 [0] => Array
	 (
	 [piratesid] => 1
	 [name] => 路飞
	 [order] => 1
	 [reward] => 2147483647
	 [devilnutid] => 1
	 [position] => 船长
	 [sword] => 999999
	 [fight] => 橡胶jet、橡胶图章
	 )
 )
```

### 2.单表查询全部

[](#2单表查询全部)

```
get后面不接参数方法不传参查全表数据

```

```
$r = $pirates->get();
```

output:

```
Array
(
    [0] => Array
        (
            [piratesid] => 1
            [name] => 路飞
            [order] => 1
            [reward] => 2147483647
            [devilnutid] => 1
            [position] => 船长
            [sword] => 999999
            [fight] => 橡胶jet、橡胶图章
        )

    [1] => Array
        (
            [piratesid] => 2
            [name] => 索罗
            [order] => 2
            [reward] => 2000000000
            [devilnutid] => 0
            [position] => 武士、杂工
            [sword] => 888888
            [fight] => 三刀流
        ),
        ...
)
```

### 3.单表查询全部返回一维数组数据

[](#3单表查询全部返回一维数组数据)

```
方法的最后一个字母用来代表格式
方法名大写字母R结尾代表取一维数组

```

```
$r = $pirates->getR(2);
```

output:

```
 Array
(
    [piratesid] => 2
    [name] => 索罗
    [order] => 2
    [reward] => 2000000000
    [devilnutid] => 0
    [position] => 武士、杂工
    [sword] => 888888
    [fight] => 三刀流
)
```

### 4.单表查询返回二维数组用主键做数组下标

[](#4单表查询返回二维数组用主键做数组下标)

```
方法名大写字母K结尾代表这种数据结构

```

```
$r = $pirates->getK(2);
```

output:

```
 Array
(
    [2] => Array
        (
            [piratesid] => 2
            [name] => 索罗
            [order] => 2
            [reward] => 2000000000
            [devilnutid] => 0
            [position] => 武士、杂工
            [sword] => 888888
            [fight] => 三刀流
        )

)
```

### 5.单表查询获取一个字段

[](#5单表查询获取一个字段)

```
方法名大写字母F结尾代表这种数据结构
在用model做查询时必须定义两个属性primaryKey、table 例如上面的 Pirates
在用model做查询时get后面直接想接的是字段比如 要查询 name、age两个字段 getNameAge()

```

```
$r = $pirates->getNameF(2);
```

output:

```
索罗
```

### 6.单表查询带limit

[](#6单表查询带limit)

```
L关键字代表limit L2_2 代表 limit 2,2, L2 代表 limit 2

```

```
$r = $pirates->getNamePositionL2_2();
```

output:

```
Array
(
    [0] => Array
        (
            [name] => 娜美
            [position] => 航海士
        )

    [1] => Array
        (
            [name] => 罗宾
            [position] => 历史学家
        )

)
```

### 7.单表带where条件查询

[](#7单表带where条件查询)

```
By关键字后面接的是查询条件

```

```
$r = $pirates->getNamePositionByDevilnutidL2_1(1);
```

output:

```
Array
(
    [0] => Array
        (
            [name] => 乔巴
            [position] => 船医
        )

)
```

\##多表查询示例 写easymodel的目的有几个 1.方便查询数据可以避开建立model和写简单sql这种枯燥无味的工作 2.最求书写的流畅，写一段代码很不情愿停下来去做另一段代码 多表查询会有点变态方法名略长，如果不喜欢文档后面有传参方式替代

\###建立多表配置文件config/easyModel.php silbings 表示一对一的关联关系这种配置查询出的数据没有层级关系 subbing 表示一对多的关联关系这种配置有层级关系 last为生成最后一层数据的key 先看一对一关系的查询

```
return [
	'siblings'	=> [
 			'pirates,devilnut,devilnuttype' => [
 					['pirates'=>'piratesid','devilnut'=>'owner'],
 					['devilnuttype'=>'devilnuttypeid','devilnut'=>'devilnuttypeid'],
 			]
	]
];
```

### 1.一对一关系多表查询

[](#1一对一关系多表查询)

```
get后面直接接多个表名 如果多个表在配置文件中能找到怎返回结果

```

```
$r = $easy->getPiratesDevilnutDevilnuttype();
```

output:

```
Array
(
    [0] => Array
        (
            [piratesid] => 1
            [name] => 路飞
            [order] => 1
            [reward] => 2147483647
            [devilnutid] => 1
            [position] => 船长
            [sword] => 999999
            [fight] => 橡胶jet、橡胶图章
            [devilnuttypeid] => 1
            [devilnutname] => 橡胶果实
            [color] => 橡胶果实..
            [owner] => 1
            [devilnutdescript] => 黄色
            [devilnuttyptename] => 超人系
            [devilnuttypedescript] => 超人系....
        )

    [1] => Array
        (
            [piratesid] => 4
            [name] => 罗宾
            [order] => 4
            [reward] => 80000000
            [devilnutid] => 2
            [position] => 历史学家
            [sword] => 666666
            [fight] => 手
            [devilnuttypeid] => 1
            [devilnutname] => 花花果实
            [color] => 花花果实..
            [owner] => 4
            [devilnutdescript] => 黄色
            [devilnuttyptename] => 超人系
            [devilnuttypedescript] => 超人系....
        )
)
```

### 一对多数据查询修改config/easyModel.php

[](#一对多数据查询修改configeasymodelphp)

```
return [
		'siblings'	=> [
// 				'pirates,devilnut,devilnuttype' => [
// 						['pirates'=>'piratesid','devilnut'=>'owner'],
// 						['devilnuttype'=>'devilnuttypeid','devilnut'=>'devilnuttypeid'],
// 				]
		],

		'subbing'	=> [
				'pirates,devilnut,devilnuttype' => [
					'keys' =>[
							['pirates'=>'piratesid','devilnut'=>'owner'],
							['devilnuttype'=>'devilnuttypeid','devilnut'=>'devilnuttypeid']
					],
					'last' => 'devilnuttypeid'
			]

		]

];
```

### 2.一对多关系多表查询

[](#2一对多关系多表查询)

```
get后面直接接多个表名如果多个表在配置文件中能找到怎返回结果

```

```
$r = $easy->getPiratesDevilnutDevilnuttype();
```

output:

```
Array
(
    [1] => Array
        (
            [piratesid] => 1
            [name] => 路飞
            [order] => 1
            [reward] => 2147483647
            [devilnutid] => 4
            [position] => 船长
            [sword] => 999999
            [fight] => 橡胶jet、橡胶图章
            [child] => Array
                (
                    [1] => Array
                        (
                            [devilnutid] => 1
                            [devilnuttypeid] => 1
                            [devilnutname] => 橡胶果实
                            [color] => 橡胶果实..
                            [owner] => 1
                            [devilnutdescript] => 黄色
                            [child] => Array
                                (
                                    [1] => Array
                                        (
                                            [devilnuttypeid] => 1
                                            [devilnuttyptename] => 超人系
                                            [devilnuttypedescript] => 超人系....
                                            [child] =>
                                        )

                                )

                        )

                    [3] => Array
                        (
                            [devilnutid] => 4
                            [devilnuttypeid] => 3
                            [devilnutname] => 火火果实
                            [color] => 火火果实..
                            [owner] => 1
                            [devilnutdescript] => 红色
                            [child] => Array
                                (
                                    [3] => Array
                                        (
                                            [devilnuttypeid] => 3
                                            [devilnuttyptename] => 自然系
                                            [devilnuttypedescript] => 自然系....
                                            [child] =>
                                        )

                                )

                        )

                )

        )

    [4] => Array
        (
            [piratesid] => 4
            [name] => 罗宾
            [order] => 4
            [reward] => 80000000
            [devilnutid] => 2
            [position] => 历史学家
            [sword] => 666666
            [fight] => 手
            [child] => Array
                (
                    [1] => Array
                        (
                            [devilnutid] => 2
                            [devilnuttypeid] => 1
                            [devilnutname] => 花花果实
                            [color] => 花花果实..
                            [owner] => 4
                            [devilnutdescript] => 黄色
                            [child] => Array
                                (
                                    [1] => Array
                                        (
                                            [devilnuttypeid] => 1
                                            [devilnuttyptename] => 超人系
                                            [devilnuttypedescript] => 超人系....
                                            [child] =>
                                        )

                                )

                        )

                )

        )

    [5] => Array
        (
            [piratesid] => 5
            [name] => 乔巴
            [order] => 5
            [reward] => 20000000
            [devilnutid] => 3
            [position] => 船医
            [sword] => 222222
            [fight] => 变身
            [child] => Array
                (
                    [2] => Array
                        (
                            [devilnutid] => 3
                            [devilnuttypeid] => 2
                            [devilnutname] => 人人果实
                            [color] => 人人果实..
                            [owner] => 5
                            [devilnutdescript] => 蓝色
                            [child] => Array
                                (
                                    [2] => Array
                                        (
                                            [devilnuttypeid] => 2
                                            [devilnuttyptename] => 动物系
                                            [devilnuttypedescript] => 动物系....
                                            [child] =>
                                        )

                                )

                        )

                )

        )

)
```

### 3.多表带where条件

[](#3多表带where条件)

```
By后面接表名然后接表的字段
如有User、Group两张表 User表有Name、age字段则可写为 getUserGroupByUserNameAge('agx','28')

```

```
$r = $easy->getPiratesDevilnutDevilnuttypeByPiratespiratesid(1);
```

output:

```
 Array
(
    [1] => Array
        (
            [piratesid] => 1
            [name] => 路飞
            [order] => 1
            [reward] => 2147483647
            [devilnutid] => 4
            [position] => 船长
            [sword] => 999999
            [fight] => 橡胶jet、橡胶图章
            [child] => Array
                (
                    [1] => Array
                        (
                            [devilnutid] => 1
                            [devilnuttypeid] => 1
                            [devilnutname] => 橡胶果实
                            [color] => 橡胶果实..
                            [owner] => 1
                            [devilnutdescript] => 黄色
                            [child] => Array
                                (
                                    [1] => Array
                                        (
                                            [devilnuttypeid] => 1
                                            [devilnuttyptename] => 超人系
                                            [devilnuttypedescript] => 超人系....
                                            [child] =>
                                        )

                                )

                        )

                    [3] => Array
                        (
                            [devilnutid] => 4
                            [devilnuttypeid] => 3
                            [devilnutname] => 火火果实
                            [color] => 火火果实..
                            [owner] => 1
                            [devilnutdescript] => 红色
                            [child] => Array
                                (
                                    [3] => Array
                                        (
                                            [devilnuttypeid] => 3
                                            [devilnuttyptename] => 自然系
                                            [devilnuttypedescript] => 自然系....
                                            [child] =>
                                        )

                                )

                        )

                )

        )

)
```

### 4.多表查询指定列

[](#4多表查询指定列)

```
get后面接多表然后接需要查询的表然后接该表的多个字段
如果查某表全部字段则可只写表名后面不接该表字段
虽然很长但是写着很爽
如有User、Group两张表User表有Name、age字段Group表有 groupid字段则可写为 getUserGroupUserNameAgeGroupGroupid('agx','28')

```

```
$r = $easy->getPiratesDevilnutDevilnuttypePiratesPiratesidNameDevilnutDevilnuttypeByPiratespiratesid(1);
```

output:

```
  Array
(
    [1] => Array
        (
            [piratesid] => 1
            [name] => 路飞
            [child] => Array
                (
                    [1] => Array
                        (
                            [devilnutid] => 1
                            [devilnuttypeid] => 1
                            [devilnutname] => 橡胶果实
                            [color] => 橡胶果实..
                            [owner] => 1
                            [devilnutdescript] => 黄色
                            [child] => Array
                                (
                                    [1] => Array
                                        (
                                            [devilnuttypeid] => 1
                                            [devilnuttyptename] => 超人系
                                            [devilnuttypedescript] => 超人系....
                                            [child] =>
                                        )

                                )

                        )

                    [3] => Array
                        (
                            [devilnutid] => 4
                            [devilnuttypeid] => 3
                            [devilnutname] => 火火果实
                            [color] => 火火果实..
                            [owner] => 1
                            [devilnutdescript] => 红色
                            [child] => Array
                                (
                                    [3] => Array
                                        (
                                            [devilnuttypeid] => 3
                                            [devilnuttyptename] => 自然系
                                            [devilnuttypedescript] => 自然系....
                                            [child] =>
                                        )

                                )

                        )

                )

        )

)
```

### 5.多表查询带limit

[](#5多表查询带limit)

```
$r = $easy->getPiratesDevilnutDevilnuttypePiratesPiratesidNameDevilnutDevilnuttypeByPiratespiratesidL0_1(1);
```

output:

```
Array
(
    [1] => Array
        (
            [piratesid] => 1
            [name] => 路飞
            [child] => Array
                (
                    [1] => Array
                        (
                            [devilnutid] => 1
                            [devilnuttypeid] => 1
                            [devilnutname] => 橡胶果实
                            [color] => 橡胶果实..
                            [owner] => 1
                            [devilnutdescript] => 黄色
                            [child] => Array
                                (
                                    [1] => Array
                                        (
                                            [devilnuttypeid] => 1
                                            [devilnuttyptename] => 超人系
                                            [devilnuttypedescript] => 超人系....
                                            [child] =>
                                        )

                                )

                        )

                )

        )

)
```

### 5.多表查询配置继承

[](#5多表查询配置继承)

```
比如配置里面有 a,b,c 则对 a b表查询则可用该项配置

```

```
$r = $easy ->getPiratesDevilnutL0_1();
```

output:

```
 Array
(
    [1] => Array
        (
            [piratesid] => 1
            [name] => 路飞
            [order] => 1
            [reward] => 2147483647
            [devilnutid] => 1
            [position] => 船长
            [sword] => 999999
            [fight] => 橡胶jet、橡胶图章
            [child] => Array
                (
                    [1] => Array
                        (
                            [devilnutid] => 1
                            [devilnuttypeid] => 1
                            [devilnutname] => 橡胶果实
                            [color] => 橡胶果实..
                            [owner] => 1
                            [devilnutdescript] => 黄色
                            [child] =>
                        )

                )

        )

)
```

\###无限分类数据查询 需要在model里面定义 config属性

\###定义model Menu.php

```
