Skip to content

Commit fe3028f

Browse files
authored
完成 Model
1 parent 4c5f78a commit fe3028f

File tree

1 file changed

+209
-4
lines changed

1 file changed

+209
-4
lines changed

README.md

+209-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# PHP QuickORM 框架开发文档
22

3-
版本:20180905
3+
版本:20180906
44

55
## 简介
66

@@ -529,7 +529,7 @@ try{
529529
```
530530
## 集合
531531

532-
PHP QuickORM 框架提供了一种新的数据类型 Collection,是对 PHP 序列数组的二次封装,以便于支持数据聚合功能,以及对对象的储存。
532+
PHP QuickORM 框架提供了一种新的数据类型 `Collection`,是对 PHP 序列数组的二次封装,以便于支持数据聚合功能,以及对对象的储存。
533533

534534
### 创建与判断
535535

@@ -629,7 +629,7 @@ echo $collection->count();
629629

630630
#### 实例集合
631631

632-
实例集合,即是集合中储存的内容为模型实例化之后的对象,可以跳至文档 Model 模型部分的 数据聚合 查看
632+
实例集合,即是集合中储存的内容为模型实例化之后的对象,可以跳至本文档 Model 模型部分的聚合查看
633633

634634
### 集合合并
635635

@@ -707,7 +707,7 @@ $collection->("", "usort", function($a, $b){
707707
### 集合分页
708708

709709
Collection 集合自带分页功能。
710-
建议在 Controller 层调用,需使用 `GET` 方式传入 `page` 字段用于展示第 n 页。 返回为 Collection 集合(具体参照文档 Collection 一章),传入的第一个参数为每页所展示的条数,第二个参数为是否开启分页的相关信息输出,默认为 true。开启后会展示当前页码、总计条数、总计页数以及是否还有下一页等信息,具体如下:
710+
建议在 Controller 层调用,需使用 `GET` 方式传入 `page` 字段用于展示第 n 页。 返回为 Collection 集合,传入的第一个参数为每页所展示的条数,第二个参数为是否开启分页的相关信息输出,默认为 true。开启后会展示当前页码、总计条数、总计页数以及是否还有下一页等信息,具体如下:
711711

712712
```php
713713
$array = ["1", "2", "3", "4", "5"];
@@ -856,19 +856,224 @@ class Demo extends Model
856856

857857
### 新增
858858

859+
新添加一条数据的方法有多种,具体如下:
860+
861+
使用模型静态方法新增数据
862+
863+
```php
864+
$data = [
865+
'title' => '测试标题',
866+
'content' => '测试内容',
867+
'author' => 'Rytia'
868+
];
869+
Demo::create($data);
870+
```
871+
872+
通过实例化新增数据
873+
```php
874+
$data = [
875+
'title' => '测试标题',
876+
'content' => '测试内容',
877+
'author' => 'Rytia'
878+
];
879+
880+
$instance = new Demo($data);
881+
$instance->save();
882+
```
883+
884+
实例化之后通过赋值新增数据
885+
```php
886+
$instance = new Demo();
887+
$instance->title = '测试标题';
888+
$instance->content = '测试内容';
889+
$instance->author = 'Rytia';
890+
$instance->save();
891+
```
892+
893+
若想通过所接收的 `POST` 内容来新增数据,可以使用如下写法:
894+
```php
895+
// 使用 PHP QuickORM 框架的 Request 请求类
896+
Demo::create($this->request->all());
897+
898+
// 使用 PHP POST 数组
899+
Demo::create($_POST);
900+
```
859901

860902
### 修改
861903

904+
修改一条数据的方法主要有以下多种,具体如下:
905+
906+
使用模型静态方法修改数据
907+
```php
908+
// 找到 ID 为 1 的那行数据
909+
$instance = Demo::find(1);
910+
911+
// 将标题修改为 demo
912+
$data = ['title' => 'demo'];
913+
$instance->update($data);
914+
```
915+
916+
实例化之后通过赋值修改数据
917+
```php
918+
// 找到 ID 为 1 的那行数据
919+
$instance = Demo::find(1);
920+
921+
// 将标题修改为 demo
922+
$instance->title = 'demo';
923+
$instance->save();
924+
```
925+
926+
使用数据库方法批量修改数据
927+
928+
```php
929+
// 找到 title 为 demo 的多行数据
930+
$instance = Demo::where(['title' => 'demo']);
931+
932+
// 将内容修改为 text
933+
$instance->update(['content' => 'text']);
934+
```
862935

863936
### 删除
864937

938+
删除一条数据的方法主要有以下多种,具体如下:
939+
940+
实例化之后执行删除方法
941+
942+
```php
943+
// 找到 ID 为 1 的那行数据
944+
$instance = Demo::find(1);
945+
946+
// 将这行数据删除
947+
$instance->delete();
948+
```
949+
950+
使用数据库方法批量删除数据
951+
952+
```php
953+
// 找到 title 为 demo 的多行数据
954+
$instance = Demo::where(['title' => 'demo']);
955+
956+
// 将符合要求的多行数据
957+
$instance->delete();
958+
```
865959

866960
### 查询
867961

962+
PHP QuickORM 框架支持多种查询方法。
963+
其中使用静态方法查询将会返回一个对应模型的实例或者实例集合,可以参考本文档中的“集合”一章进行操作。
964+
而采用查询构造器将返回 `Database` 对象,可参考本文档中 “数据库” 一章进行操作。您亦可以在查询构造器的链式操作中加上 `get()` 方法将其转换为 `Collection` 对象(即转换为实例集合),从而参考本文档中的“集合”一章进行操作。
965+
966+
#### 静态查询
967+
968+
静态查询即通过模型提供的静态方法进行查询,具体如下:
969+
970+
```php
971+
// 找到 ID 为 1 的一行数据
972+
$instance = Demo::find(1);
973+
974+
// 搜索 titile 中含有 hello 的数据
975+
$collection = Demo::search("title","%hello%");
976+
977+
// 显示全部数据
978+
$collection = Demo::all();
979+
```
980+
868981
#### 查询构造器
869982

983+
通过模型的 `where()``whereRaw()``raw()` 方法,可以直接调用数据库的查询构造器,具体如下:
984+
985+
```php
986+
// 查询构造器演示,更多方法请参照本文档“数据库”一章
987+
988+
$database = Demo::where(["title" => "测试标题"])->orWhere(["title" => "演示标题"]);
989+
$collection = Demo::where(["title" => "测试标题"])->orWhere(["title" => "演示标题"])->get();
990+
991+
$database = Demo::whereRaw('title="测试标题"')->orderBy("id", "DESC");
992+
$collection = Demo::whereRaw('title="测试标题"')->orderBy("id", "DESC")->get();
993+
994+
$database = Demo::raw("SELECT * FROM {table} WHERE id=1");
995+
$collection = Demo::raw("SELECT * FROM {table} WHERE id=1")->get();
996+
```
997+
870998
#### 查询分页
871999

1000+
PHP QuickORM 框架为模型提供了 `paginate()` 方法,可以将当前模型全部数据通过分页输出。
1001+
该方法需使用 `GET` 方式传入 `page` 字段用于展示第 n 页。 返回为 Collection 集合,传入的第一个参数为每页所展示的条数,第二个参数为是否开启分页的相关信息输出,默认为 true。开启后会展示当前页码、总计条数、总计页数以及是否还有下一页等信息,具体如下:
1002+
1003+
```php
1004+
// 将全部数据以每 3 条为一页输出
1005+
Demo::paginate(3);
1006+
1007+
// 此时请求 /?page=1,则会返回第一页的信息
1008+
```
1009+
1010+
若返回的是 `Collection` 或者 `Database` 实例,同样可以使用 `paginate()` 方法进行分页,具体参照本文档相对于章节。
1011+
8721012
### 聚合
8731013

1014+
Model 模型的聚合,即是储存着模型多个实例的 `Collection` 集合的聚合,具体如下:
1015+
1016+
```php
1017+
// 获取模型中 title 字段为 test 的全部数据
1018+
$collection = Demo::where([ "title" => "test" ])->get();
1019+
1020+
// 显示第一个元素
1021+
echo $collection->first();
1022+
1023+
// 显示最后一个元素
1024+
echo $collection->last();
1025+
1026+
// 显示集合中 age 字段为最大值的实例
1027+
echo $collection->max("age");
1028+
1029+
// 显示集合中 age 字段为最小值的实例
1030+
echo $collection->min("age");
1031+
1032+
// 显示集合中 age 字段的平均值
1033+
echo $collection->average("age");
1034+
1035+
// 显示集合中 age 字段的数值总和
1036+
echo $collection->sum("age");
1037+
1038+
// 显示集合中元素个数
1039+
echo $collection->count();
1040+
```
1041+
1042+
### 排序
1043+
1044+
Model 模型的排序,即是储存着模型多个实例的 `Collection` 集合的排序。
1045+
其默认排序方式为升序(ASC),排序方法为 PHP 自带的 `usrot`,具体如下:
1046+
1047+
```php
1048+
// 获取模型中 title 字段为 test 的全部数据
1049+
$collection = Demo::where([ "title" => "test" ])->get();
1050+
1051+
// 根据 age 字段升序排序
1052+
$collection->sortBy("age");
1053+
1054+
// 根据 age 字段降序排序
1055+
$collection->sortBy("age", "DESC");
1056+
```
1057+
1058+
### 转换
1059+
1060+
Model 模型的实例对象可以转换为 `JSON` 字符串,具体如下:
1061+
1062+
```php
1063+
// 找到 ID 为 1 的一行数据
1064+
$instance = Demo::find(1);
1065+
1066+
// 显示输出 JSON
1067+
echo $collection;
1068+
1069+
// 转化为 JSON 格式
1070+
$result = $collection->toJson();
1071+
1072+
```
1073+
1074+
若返回的是 `Collection` 或者 `Database` 实例,同样可以使用 `toJson()` 方法进行转换。
1075+
1076+
同时 `Collection` 另有 `toArray()` 方法可以将集合转换为普通 PHP 数组,具体参照本文档相对于章节。
1077+
1078+
8741079

0 commit comments

Comments
 (0)