laravel8.5安装laravel-permission用户权限管理

1、使用composer安装laravel-permission包

composer里执行下列命令

composer require spatie/laravel-permission

2、生成迁移文件

composer里执行下列命令

php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="migrations"

3、生成配置文件

composer里执行下列命令

php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider" --tag="config"

如果生成不了,可以尝试一下以下命令,我选择的是18、19两个就可以了

php artisan vendor:publish

4、迁移数据

composer里执行下面命令

php artisan migrate

执行后,我不知道其他人是怎么样的,我的出现报错了,提示如下

 SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes 

然后百度一大圈,照到改还是不对,看迁移文件我一下悟了,把database\migrations\2022_01_06_041301_create_permission_tables.php(命令生成的迁移文件)这个里面的几个字段的字符串类型长度,手动设置一下,我的是mysql8.0,我当时看到这悟的;

$table->string('name');    // For MySQL 8.0 use string('name', 125);

如果迁移还报错,提示

[Illuminate \ Database \ QueryException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table users add unique users_email_unique(email))

SQLSTATE [42000]:语法错误或访问冲突:1071指定密钥太长; 最大密钥长度为767字节

要解决此问题,您只需编辑 AppServiceProvider.php文件并在 boot方法内设置默认字符串长度,就需要做如下修改:

use Illuminate\Support\Facades\Schema; 
public function boot()
{
    Schema::defaultStringLength(191);
}

然后把设置迁移文件的字符串类型的全改成这样的了,就不报错了,然后就会在数据库里面生成5张表了,这个migrations表好像没用,可以删;

$table->string('name','125');       // For MySQL 8.0 use string('name', 125);

修改完成后,再次执行php artisan migrate;

php artisan migrate

到这里安装laravel-permission就完成了,使用方法后续添加;

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 4

这个我也摸索了好久,还是建议你先看下官方文档。

2年前 评论
farmer-code (楼主) 2年前
liziyu (作者) 2年前
farmer-code (楼主) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!