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 协议》,转载必须注明作者和本文链接
这个我也摸索了好久,还是建议你先看下官方文档。