Showing
1 changed file
with
73 additions
and
73 deletions
1 | -## LUMEN+API Model规范 | 1 | +## LUMEN+API Model规范 |
2 | 2 | ||
3 | 3 | ||
4 | -### 1. Model规范 | 4 | +### 1. Model规范 |
5 | 5 | ||
6 | -* 使用Model实现数据业务处理,包括数据表和数据关联表的增删改查。 | 6 | +* 使用Model实现数据业务处理,包括数据表和数据关联表的增删改查。 |
7 | 7 | ||
8 | -* 对于各个表的Model, 继承自定义的BaseModel类,而不是Model类 | 8 | +* 对于各个表的Model, 继承自定义的BaseModel类,而不是Model类 |
9 | 9 | ||
10 | -* 如果表和表之间有一定的关系,1vs1, 1vsN,那在Model中使用hasOne,belongsTo进行映射,通过这样的映射,可以对Model对象实现很清晰的操作逻辑: | 10 | +* 如果表和表之间有一定的关系,1vs1, 1vsN,那在Model中使用hasOne,belongsTo进行映射,通过这样的映射,可以对Model对象实现很清晰的操作逻辑: |
11 | 11 | ||
12 | - ```php | 12 | +```php |
13 | - class GroupModel extends BaseModel { | 13 | +class GroupModel extends BaseModel { |
14 | 14 | ||
15 | /** | 15 | /** |
16 | * @return GroupModel | 16 | * @return GroupModel |
... | @@ -30,52 +30,52 @@ | ... | @@ -30,52 +30,52 @@ |
30 | return $this->weixinGroupInfo()->first(); | 30 | return $this->weixinGroupInfo()->first(); |
31 | } | 31 | } |
32 | 32 | ||
33 | - public funciton groupSites() { | 33 | +public funciton groupSites() { |
34 | return $this->hasMany(GroupSite::class,'group_id','group_id'); | 34 | return $this->hasMany(GroupSite::class,'group_id','group_id'); |
35 | - } | 35 | +} |
36 | 36 | ||
37 | - /** | 37 | +/** |
38 | * @return Collection | 38 | * @return Collection |
39 | */ | 39 | */ |
40 | - public function myGroupSites() { | 40 | +public function myGroupSites() { |
41 | return $this->groupSites->get(); | 41 | return $this->groupSites->get(); |
42 | - } | 42 | +} |
43 | 43 | ||
44 | - public function getMyGroupName() { | 44 | +public function getMyGroupName() { |
45 | return isset($this->group_name) ? $this->group_name : null; | 45 | return isset($this->group_name) ? $this->group_name : null; |
46 | - } | 46 | +} |
47 | - } | 47 | +} |
48 | 48 | ||
49 | - $groupInstance = (new GroupModel())->getInstanceByGroupCode('Foo'); | 49 | +$groupInstance = (new GroupModel())->getInstanceByGroupCode('Foo'); |
50 | - $groupWeixinInfoInstance = $groupInstance->myWeixinGroupInfo(); | 50 | +$groupWeixinInfoInstance = $groupInstance->myWeixinGroupInfo(); |
51 | - $groupSites = $groupInstance->myGroupSites()->filter( function($site) {/**/ }); | 51 | +$groupSites = $groupInstance->myGroupSites()->filter( function($site) {/**/ }); |
52 | 52 | ||
53 | 53 | ||
54 | - ``` | 54 | +``` |
55 | 55 | ||
56 | -* Model必须实现数据表的增删改操作,不能让这些操作暴露在Controller或者Service中 | 56 | +* Model必须实现数据表的增删改操作,不能让这些操作暴露在Controller或者Service中 |
57 | 57 | ||
58 | - ```php | 58 | +```php |
59 | - class UserModel extends BasicModel | 59 | +class UserModel extends BasicModel |
60 | - { | 60 | +{ |
61 | public function insertUser(array $userInfo) { /**/ } | 61 | public function insertUser(array $userInfo) { /**/ } |
62 | public function updateUser(array $userInfo) { /**/ } | 62 | public function updateUser(array $userInfo) { /**/ } |
63 | - /* 如有必要,更新字段的操作颗粒度可以降底到每一项 */ | 63 | + /* 如有必要,更新字段的操作颗粒度可以降底到每一项 */ |
64 | public function updateUserLoginName ($userId,$userName) {/**/} | 64 | public function updateUserLoginName ($userId,$userName) {/**/} |
65 | public function deleteUserById($userId) {/**/} | 65 | public function deleteUserById($userId) {/**/} |
66 | - } | 66 | +} |
67 | - ``` | 67 | +``` |
68 | - | 68 | + |
69 | -* Model层函数的返回,都要写明注释(尤其是参数和返回值类型),以便Controller调用时,可以智能感知和减少错误发生的机率。 | 69 | +* Model层函数的返回,都要写明注释(尤其是参数和返回值类型),以便Controller调用时,可以智能感知和减少错误发生的机率。 |
70 | - | 70 | + |
71 | - ```php | 71 | +```php |
72 | - /** | 72 | +/** |
73 | - * 增加一个新的用户,成功的情况下,返回用户对象 | 73 | +* 增加一个新的用户,成功的情况下,返回用户对象 |
74 | - * @param array userInfo | 74 | +* @param array userInfo |
75 | - * ['userName','userSex','userDesc'] | 75 | +* ['userName','userSex','userDesc'] |
76 | - * @result App\Models\User | 76 | +* @result App\Models\User |
77 | - */ | 77 | +*/ |
78 | - public function insertUser(array $userInfo) { | 78 | +public function insertUser(array $userInfo) { |
79 | $this->arrValidation($userInfo, [ | 79 | $this->arrValidation($userInfo, [ |
80 | 'userName' => 'required|string|min:6' | 80 | 'userName' => 'required|string|min:6' |
81 | ]); | 81 | ]); |
... | @@ -87,33 +87,33 @@ | ... | @@ -87,33 +87,33 @@ |
87 | $newUser->save(); | 87 | $newUser->save(); |
88 | 88 | ||
89 | return $newUser; | 89 | return $newUser; |
90 | - } | 90 | +} |
91 | - ``` | 91 | +``` |
92 | 92 | ||
93 | -* 不要使用scope类型的函数。 | 93 | +* 不要使用scope类型的函数。 |
94 | 94 | ||
95 | -* 在函数上区分并辩明属于Model的方法和属于Instance的方法。 | 95 | +* 在函数上区分并辩明属于Model的方法和属于Instance的方法。 |
96 | 96 | ||
97 | - > 所谓Model方法,是指new一个Model实例即可调用的方法,对于操作库,可以使用Model方法 | 97 | + > 所谓Model方法,是指new一个Model实例即可调用的方法,对于操作库,可以使用Model方法 |
98 | > | 98 | > |
99 | - > 所谓Instance方法,是指对应的数据表中的一个实例,例如,通过User::find(1)即可获得一个Instance方法。 | 99 | + > 所谓Instance方法,是指对应的数据表中的一个实例,例如,通过User::find(1)即可获得一个Instance方法。 |
100 | > | 100 | > |
101 | - > Instance方法一般用来获得属性,实现实例的业务逻辑,操作与此实例关联的其它数据模型的实例。 | 101 | + > Instance方法一般用来获得属性,实现实例的业务逻辑,操作与此实例关联的其它数据模型的实例。 |
102 | > | 102 | > |
103 | - > 一般来说,在Instance方法上,加一个My修饰词进行表示。 | 103 | + > 一般来说,在Instance方法上,加一个My修饰词进行表示。 |
104 | 104 | ||
105 | - ```php | 105 | +```php |
106 | - public function insertUser(array $userInfo); // Model方法 | 106 | +public function insertUser(array $userInfo); // Model方法 |
107 | - public function getMyUserName() { return $this->user_name; } // Instance方法 | 107 | +public function getMyUserName() { return $this->user_name; } // Instance方法 |
108 | - public function checkMyRoles() { /**/ } | 108 | +public function checkMyRoles() { /**/ } |
109 | - ``` | 109 | +``` |
110 | 110 | ||
111 | -* 在Model层所实现的业务逻辑上,要把业务边界分清楚,比如对于Group/Site这样的业务来说,Group可以代理Site的一些操作,但是具体涉及到Site数据操作,需要交给Site模型进行。 | 111 | +* 在Model层所实现的业务逻辑上,要把业务边界分清楚,比如对于Group/Site这样的业务来说,Group可以代理Site的一些操作,但是具体涉及到Site数据操作,需要交给Site模型进行。 |
112 | 112 | ||
113 | - ```php | 113 | +```php |
114 | - class Group extends BaseModel | 114 | +class Group extends BaseModel |
115 | - { | 115 | +{ |
116 | - /* 假设groupInfo中涵盖了site的信息 */ | 116 | + /* 假设groupInfo中涵盖了site的信息 */ |
117 | public function receiveGroupInfoEvent($groupInfo) { | 117 | public function receiveGroupInfoEvent($groupInfo) { |
118 | $this->updateGroup($groupInfo); | 118 | $this->updateGroup($groupInfo); |
119 | if(isset($groupInfo['sites'])) { | 119 | if(isset($groupInfo['sites'])) { |
... | @@ -129,22 +129,22 @@ | ... | @@ -129,22 +129,22 @@ |
129 | foreach($siteList as $siteInfo) | 129 | foreach($siteList as $siteInfo) |
130 | (new Site())->updateSite($siteInfo); | 130 | (new Site())->updateSite($siteInfo); |
131 | } | 131 | } |
132 | - } | 132 | +} |
133 | - ``` | 133 | +``` |
134 | - | 134 | + |
135 | -* BaseModel的一些基本操作 | 135 | +* BaseModel的一些基本操作 |
136 | - | 136 | + |
137 | - | 索引 | 函数方法 | 备注 | | 137 | +| 索引 | 函数方法 | 备注 | |
138 | - | ---- | ----------------------- | ---------------------------------------- | | 138 | +| ---- | ----------------------- | ---------------------------------------- | |
139 | - | 1 | getInstanceById | Model方法,根据关键字获得Instance对象 | | 139 | +| 1 | getInstanceById | Model方法,根据关键字获得Instance对象 | |
140 | - | 2 | getMyId | Instance方法,获得主ID | | 140 | +| 2 | getMyId | Instance方法,获得主ID | |
141 | - | 3 | getTable | Model方法,获得数据表名称 | | 141 | +| 3 | getTable | Model方法,获得数据表名称 | |
142 | - | 4 | toSql | Model方法,查询时可以将其转换为SQL语句 | | 142 | +| 4 | toSql | Model方法,查询时可以将其转换为SQL语句 | |
143 | - | 5 | getQueryByConditions | Model方法,基础的条件查询,一些场合下可以代替where语句 | | 143 | +| 5 | getQueryByConditions | Model方法,基础的条件查询,一些场合下可以代替where语句 | |
144 | - | 6 | checkValidItem | Model方法,查询符合条件的数据有多少项 | | 144 | +| 6 | checkValidItem | Model方法,查询符合条件的数据有多少项 | |
145 | - | 7 | updateItemsByPrimaryId | Model方法,根据ID更新数据表项 | | 145 | +| 7 | updateItemsByPrimaryId | Model方法,根据ID更新数据表项 | |
146 | - | 8 | updateItemsByConditions | Model方法,根据条件更新数据表项 | | 146 | +| 8 | updateItemsByConditions | Model方法,根据条件更新数据表项 | |
147 | - | 9 | checkObjectIdExist | Instance方法,检查调用实例是否Instance对象,如果不是,则抛出异常 | | 147 | +| 9 | checkObjectIdExist | Instance方法,检查调用实例是否Instance对象,如果不是,则抛出异常 | |
148 | - | 148 | + |
149 | - ? | 149 | + |
150 | 150 | ... | ... |
-
Please register or login to post a comment