laravel 权限迁移不创建表

Posted

技术标签:

【中文标题】laravel 权限迁移不创建表【英文标题】:laravel permission migrate not create table 【发布时间】:2021-06-29 18:50:13 【问题描述】:

我有一个问题。 我使用 spaite 和 composer require 命令创建了权限。 在迁移目录中存在 create_permission 文件。 所以,我迁移但没有创建表。 当我使用 php artisan migrate:rollback 或 php artisan migrate:reset 回滚迁移时,我发现了这个错误。 问题是什么? 我用过laravel 8 和其他 laravel 8 项目创建表但现在当前项目是相同的 laravel 8 但不创建表并且回滚时出错。 另外,我可以看到在当前项目中创建了personal_access_token 表。 什么是理由? 请帮帮我。

【问题讨论】:

你能发布你收到的错误信息吗? 【参考方案1】:

在将这个 composer 包(spatie 或 laravel-permission)安装到 laravel 时,您是否按照以下步骤操作:

将 composer 包(laravel-permission 或 spatie)安装到 Laravel:

composer require spatie/laravel-permission

配置/app.php

'providers' => [
    ....
    Spatie\Permission\PermissionServiceProvider::class,
],

我们还可以对 Spatie 包进行自定义更改,因此如果您也想更改,则可以触发以下命令并在 config/permission.php 和迁移文件中获取配置文件。

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

现在您可以看到 permission.php 文件和一个迁移。因此您可以使用以下命令运行迁移:

php artisan migrate

Spatie 包提供了它的内置中间件,我们可以简单地使用它,如下所示: 因此,我们必须以这种方式在 Kernel.php 文件中添加中间件: app/Http/Kernel.php

....
protected $routeMiddleware = [
    ....
    'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class,
    'permission' => \Spatie\Permission\Middlewares\PermissionMiddleware::class,
    'role_or_permission' => \Spatie\Permission\Middlewares\RoleOrPermissionMiddleware::class,
]
....

【讨论】:

以上是关于laravel 权限迁移不创建表的主要内容,如果未能解决你的问题,请参考以下文章

laravel5.6 使用迁移创建表

Laravel 迁移 - 未创建表

Laravel 使用迁移错误创建表

Laravel Artisan Migrate 命令创建表但不将每个迁移文件填充到迁移表

是否可以在 Laravel 7+ 中为已创建的表创建迁移?

生成为 Laravel 作业队列创建表的迁移?