|
1 | 1 | # PHP QuickORM 框架开发文档
|
2 | 2 |
|
3 |
| -版本:20180905 |
| 3 | +版本:20180906 |
4 | 4 |
|
5 | 5 | ## 简介
|
6 | 6 |
|
|
529 | 529 | ```
|
530 | 530 | ## 集合
|
531 | 531 |
|
532 |
| -PHP QuickORM 框架提供了一种新的数据类型 Collection,是对 PHP 序列数组的二次封装,以便于支持数据聚合功能,以及对对象的储存。 |
| 532 | +PHP QuickORM 框架提供了一种新的数据类型 `Collection`,是对 PHP 序列数组的二次封装,以便于支持数据聚合功能,以及对对象的储存。 |
533 | 533 |
|
534 | 534 | ### 创建与判断
|
535 | 535 |
|
@@ -629,7 +629,7 @@ echo $collection->count();
|
629 | 629 |
|
630 | 630 | #### 实例集合
|
631 | 631 |
|
632 |
| -实例集合,即是集合中储存的内容为模型实例化之后的对象,可以跳至文档 Model 模型部分的 数据聚合 查看。 |
| 632 | +实例集合,即是集合中储存的内容为模型实例化之后的对象,可以跳至本文档 Model 模型部分的聚合查看。 |
633 | 633 |
|
634 | 634 | ### 集合合并
|
635 | 635 |
|
@@ -707,7 +707,7 @@ $collection->("", "usort", function($a, $b){
|
707 | 707 | ### 集合分页
|
708 | 708 |
|
709 | 709 | Collection 集合自带分页功能。
|
710 |
| -建议在 Controller 层调用,需使用 `GET` 方式传入 `page` 字段用于展示第 n 页。 返回为 Collection 集合(具体参照文档 Collection 一章),传入的第一个参数为每页所展示的条数,第二个参数为是否开启分页的相关信息输出,默认为 true。开启后会展示当前页码、总计条数、总计页数以及是否还有下一页等信息,具体如下: |
| 710 | +建议在 Controller 层调用,需使用 `GET` 方式传入 `page` 字段用于展示第 n 页。 返回为 Collection 集合,传入的第一个参数为每页所展示的条数,第二个参数为是否开启分页的相关信息输出,默认为 true。开启后会展示当前页码、总计条数、总计页数以及是否还有下一页等信息,具体如下: |
711 | 711 |
|
712 | 712 | ```php
|
713 | 713 | $array = ["1", "2", "3", "4", "5"];
|
@@ -856,19 +856,224 @@ class Demo extends Model
|
856 | 856 |
|
857 | 857 | ### 新增
|
858 | 858 |
|
| 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 | +``` |
859 | 901 |
|
860 | 902 | ### 修改
|
861 | 903 |
|
| 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 | +``` |
862 | 935 |
|
863 | 936 | ### 删除
|
864 | 937 |
|
| 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 | +``` |
865 | 959 |
|
866 | 960 | ### 查询
|
867 | 961 |
|
| 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 | + |
868 | 981 | #### 查询构造器
|
869 | 982 |
|
| 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 | + |
870 | 998 | #### 查询分页
|
871 | 999 |
|
| 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 | + |
872 | 1012 | ### 聚合
|
873 | 1013 |
|
| 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 | + |
874 | 1079 |
|
0 commit comments