# laravel-single
一个100%兼容微服务框架go-zero、为PHP语言Laravel框架的PHPer们准备、支持GRPC的单体框架。
### 介绍
为了便于php的laravel开发者上手才基于go-zero开发的集群版本。laravel-single项目是其单机版本,其是该项目是100%遵循go-zero官方标准定制项目。修改内容如下:
1. 修改如下模版,并且修改了对应版本goctl代码:
- api的handler和main;
- rpc的main;
- api和rpc以及model引入model;
- 数据库配置Redis配置etc/index.yaml、app/internal/config/config.go、app/internal/svc/serviceContext.go
2. 所有生成代码都是基于goctl命令的--style=goZero风格,也可使用--style=go_zero.【强烈不推荐】使用默认--style=gozero风格;
3. 所有时间类型保持同laravel一致使用created_at和updated_at;
4. 路由规则尽量符合laravel的RestFul风格;
### 【开发准备一】编译指定版本goctl,代码地址是laravel-cli
```shell
go build -o laravel-cli.exe goctl.go
mv ./laravel-cli.exe $GOPATH/bin/laravel-cli.exe
````
### 【开发准备二】laravel-single的mysql数据库,数据库密码见第1步,根据需要修改。
```mysql
DROP TABLE IF EXISTS `demo`;
CREATE TABLE `demo` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL DEFAULT 0 COMMENT '关联user表主键id',
`picture_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '图片链接[image]',
`video_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '视频链接[video]',
`is_display` tinyint(4) NOT NULL DEFAULT 1 COMMENT '(用户端)是否显示[check]:1=不显示、2=显示、0=全部:默认=1',
`sort` int(11) NOT NULL DEFAULT 0 COMMENT '(降序)排序',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`is_del` tinyint(4) NOT NULL DEFAULT 1 COMMENT '是否删除:1=否、2=是、0=全部:默认=1',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '创建表格demo' ROW_FORMAT = DYNAMIC;
```
【加索引的sql】
```mysql
CREATE TABLE `demo2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL DEFAULT '0' COMMENT '关联user表主键id',
`picture_url` varchar(255) NOT NULL DEFAULT '' COMMENT '图片链接[image]',
`video_url` varchar(255) NOT NULL DEFAULT '' COMMENT '视频链接[video]',
`is_display` tinyint(4) NOT NULL DEFAULT '1' COMMENT '(用户端)是否显示[check]:1=不显示、2=显示、0=全部:默认=1',
`sort` int(11) NOT NULL DEFAULT '0' COMMENT '(降序)排序',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`is_del` tinyint(4) NOT NULL DEFAULT '1' COMMENT '是否删除:1=否、2=是、0=全部:默认=1',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `idx_user_id` (`user_id`) USING BTREE COMMENT '用户id唯一索引'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='创建表格demo';
```
### 【开发准备三】准备redis
### 第1步:修改app/etc/index.yaml的mysql链接信息(加#号的根据需要自行修改)
```yaml
GormCon:
Path: 127.0.0.1 #
Port: 3306 #
Dbname: laravel-single #
Username: root #
Password: "123456" #
MaxIdleConns: 10
MaxOpenConns: 10
LogMode: dev
LogZap: false
Config: charset=utf8mb4&parseTime=True&loc=Local
# Redis缓存配置
RedisCache:
- Host: 127.0.0.1:6379 #
Pass: #
```
### 第2步:启动项目 在项目根目录执行这个命令
```shell
go run app/index.go -f app/etc/index.yaml #有效命令、根目录
go run index.go -f etc/index.yaml #推荐使用有效命令、app目录
#[无效命令] go run index.go -f etc/index.yaml 执行这个命令会导致public目录静态文件无法访问
```
如上下面正常启动
### 第3步:创建新增api,重新生成新接口文件,根目录复制执行如下命令
```shell
laravel-cli api go -api app/routes/web.api -dir app --style=goZero
```
【说明】:
创建api步骤见官方https://go-zero.dev/docs/reference和https://go-zero.dev/docs/tutorials,也可以找博主获取数据库生成.api文件的sql2c工具
# 第4步:生成model命令
```shell
laravel-cli model mysql datasource -url="root:123456@tcp(127.0.0.1:3306)/laravel-single" -table="demo" -dir="./" --style=goZero
laravel-cli model mysql datasource -url="root:123456@tcp(127.0.0.1:3306)/laravel-single" -table="demo" -dir="./" --style=goZero
goctl1.5.5 model mysql datasource -url="root:123456@tcp(127.0.0.1:3306)/laravel-single" -table="demo" -dir="./app/model/gormNoCache" --style=goZero --home="./template/gorm/1.4.2"
goctl1.5.5 model mysql datasource -url="root:123456@tcp(127.0.0.1:3306)/laravel-single" -table="demo2" -dir="./app/model/gormCache" -cache=true --style=goZero --home="./template/gorm/1.4.2"
goctl1.5.5 model mysql datasource -url="root:123456@tcp(127.0.0.1:3306)/laravel-single" -table="demo2" -dir="./app/model/Cache" -cache=true --style=goZero
goctl1.5.5 model mysql datasource -url="root:123456@tcp(127.0.0.1:3306)/laravel-single" -table="demo" -dir="./app/model/NoCache" --style=goZero
```
# 其他功能、在routes文件夹下面使用goctl-swagger插件执行以下命令生成swagger2.0.json文件
```shell
#依赖
#go install github.com/zeromicro/go-zero/tools/goctl@latest
#go install github.com/zeromicro/goctl-swagger@latest
laravel-cli api plugin -p goctl-swagger="swagger -filename swagger2.0.json" --api app/routes/web.api --dir ./public
```
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
一个基于gozero开发、为PHP语言Laravel框架的P.zip (244个子文件)
app\routes\sys\user.api 6KB
app\routes\sys\menu.api 3KB
app\routes\user\user.api 3KB
app\routes\config\dict.api 3KB
app\routes\sys\dept.api 3KB
app\routes\sys\role.api 3KB
app\routes\sys\profession.api 2KB
app\routes\sys\job.api 2KB
app\routes\log\log.api 776B
app\routes\web.api 510B
app\routes\common.api 447B
app\Dockerfile 786B
.git\config 316B
.git\description 73B
.git\HEAD 24B
.git\index 25KB
.git\info\exclude 240B
.git\logs\HEAD 202B
.git\logs\refs\heads\develop 202B
.git\logs\refs\remotes\origin\HEAD 202B
.git\packed-refs 115B
.git\refs\heads\develop 41B
.git\refs\remotes\origin\HEAD 33B
.gitignore 557B
app\internal\types\types.go 19KB
app\common\gormc\cachedgorm.go 8KB
app\internal\handler\routes.go 8KB
app\common\utils\date.go 8KB
app\model\NoCache\demoModel_gen.go 6KB
app\model\Cache\demoModel_gen.go 6KB
app\model\gormCache\demoModel_gen.go 5KB
app\common\utils\database.go 3KB
app\model\gormNoCache\demoModel_gen.go 3KB
app\common\gormc\cachedgorm_test.go 2KB
app\common\gormc\mysql_config.go 2KB
app\common\gormc\pg_config.go 2KB
app\common\publicDirHandler.go 2KB
app\internal\logic\user\getLoginCaptchaLogic.go 1KB
app\common\utils\context.go 1KB
app\common\utils\strings.go 1KB
app\common\gormc\config.go 1KB
app\internal\svc\serviceContext.go 1KB
app\common\utils\user.go 1006B
app\model\gormCache\demoModel.go 832B
app\internal\handler\sys\profession\getSysProfessionPageHandler.go 743B
app\common\utils\file.go 724B
app\internal\handler\sys\user\getSysUserRdpjInfoHandler.go 720B
app\index.go 719B
app\internal\logic\sys\profession\getSysProfessionPageLogic.go 718B
app\internal\handler\config\dict\getConfigDictPageHandler.go 716B
app\model\gormNoCache\demoModel.go 716B
app\internal\handler\sys\profession\deleteSysProfessionHandler.go 710B
app\internal\handler\sys\profession\updateSysProfessionHandler.go 710B
app\internal\handler\log\login\getLogLoginPageHandler.go 708B
app\internal\logic\sys\user\getSysUserRdpjInfoLogic.go 702B
app\internal\handler\sys\user\getSysUserPageHandler.go 701B
app\internal\handler\sys\user\updateSysUserPasswordHandler.go 700B
app\internal\handler\sys\profession\addSysProfessionHandler.go 698B
app\internal\handler\sys\job\getSysJobPageHandler.go 694B
app\model\Cache\demoModel.go 692B
app\internal\logic\config\dict\getConfigDictPageLogic.go 688B
app\internal\logic\sys\user\updateSysUserPasswordLogic.go 685B
app\internal\handler\sys\menu\updateSysPermMenuHandler.go 684B
app\internal\handler\sys\menu\deleteSysPermMenuHandler.go 684B
app\internal\handler\config\dict\updateConfigDictHandler.go 683B
app\internal\handler\config\dict\deleteConfigDictHandler.go 683B
app\internal\handler\user\updateUserPasswordHandler.go 680B
app\internal\logic\sys\profession\updateSysProfessionLogic.go 677B
app\internal\logic\sys\profession\deleteSysProfessionLogic.go 677B
app\internal\handler\user\updateUserProfileHandler.go 676B
app\internal\logic\log\login\getLogLoginPageLogic.go 673B
app\internal\handler\sys\menu\addSysPermMenuHandler.go 672B
app\internal\handler\config\dict\addConfigDictHandler.go 671B
app\internal\handler\sys\role\deleteSysRoleHandler.go 668B
app\internal\handler\sys\role\updateSysRoleHandler.go 668B
app\internal\handler\sys\dept\deleteSysDeptHandler.go 668B
app\internal\handler\sys\user\deleteSysUserHandler.go 668B
app\internal\handler\sys\dept\updateSysDeptHandler.go 668B
app\internal\handler\sys\user\updateSysUserHandler.go 668B
app\internal\logic\user\getUserProfileInfoLogic.go 667B
app\internal\logic\sys\menu\getSysPermMenuListLogic.go 667B
app\internal\logic\sys\user\getSysUserPageLogic.go 664B
app\internal\handler\user\loginHandler.go 664B
app\internal\handler\sys\job\deleteSysJobHandler.go 661B
app\internal\handler\sys\job\updateSysJobHandler.go 661B
app\internal\logic\user\getGenerateAvatarLogic.go 660B
app\internal\logic\user\updateUserPasswordLogic.go 660B
app\internal\logic\config\dict\getConfigDictListLogic.go 660B
app\internal\logic\sys\menu\deleteSysPermMenuLogic.go 657B
app\internal\logic\sys\menu\updateSysPermMenuLogic.go 657B
app\internal\handler\sys\dept\addSysDeptHandler.go 656B
app\internal\handler\sys\user\addSysUserHandler.go 656B
app\internal\logic\sys\profession\addSysProfessionLogic.go 656B
app\internal\handler\sys\role\addSysRoleHandler.go 656B
app\internal\logic\sys\job\getSysJobPageLogic.go 655B
app\internal\logic\user\updateUserProfileLogic.go 653B
app\model\NoCache\demoModel.go 652B
app\internal\logic\config\dict\deleteConfigDictLogic.go 650B
app\internal\logic\config\dict\updateConfigDictLogic.go 650B
app\internal\handler\sys\job\addSysJobHandler.go 649B
共 244 条
- 1
- 2
- 3
资源评论
学习开源项目成就精彩人生
- 粉丝: 1130
- 资源: 1763
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功