Php 如何在Spatial/laravel权限中使用UUID

Php 如何在Spatial/laravel权限中使用UUID,php,laravel,laravel-5,eloquent,spatie,Php,Laravel,Laravel 5,Eloquent,Spatie,我正在使用ramsey/uuid作为我所有项目表的主键。如何禁用自动递增并允许填充角色和权限主键?我已经设法在其他表上实现了这一点,但这两个表一直困扰着我。在app中创建一个名为Traits的文件夹。在那里,创建一个文件Uuids.php 将以下代码添加到Uuids.php <?php namespace YourNamespace; use Illuminate\Support\Str; trait Uuids { /** * Boot function from

我正在使用
ramsey/uuid
作为我所有项目表的主键。如何禁用自动递增并允许填充
角色
权限
主键?我已经设法在其他表上实现了这一点,但这两个表一直困扰着我。

app
中创建一个名为
Traits
的文件夹。在那里,创建一个文件
Uuids.php

将以下代码添加到
Uuids.php

<?php

namespace YourNamespace;

use Illuminate\Support\Str;

trait Uuids
{
    /**
    * Boot function from Laravel
    */
    protected static function boot()
    {
        parent::boot();

        static::creating(function ($model) {
            $model->incrementing = false;
            $model->{$model->getKeyName()} = Str::uuid()->toString();
        });
    }
}
在修改列之前,请确保将
原则/dbal
依赖项添加到composer.json文件中。DBAL库用于确定列的当前状态,并创建对列进行指定调整所需的SQL查询:

编写器需要条令/dbal

接下来创建一个迁移文件

php artisan make:migration change\u primary\u key\u type\u in\u roles\u table--table=roles
然后在您的迁移文件中。你这样做

public function up()
{
    Schema::table('roles', function (Blueprint $table) {
        $table->uuid('id')->change();
    });
}

public function down()
{
    Schema::table('roles', function (Blueprint $table) {
        $table->increments('id')->change();
    });
}
不要忘记执行
编写器转储自动加载

希望这有帮助


更新:我写了一篇关于如何实现这一点的博文

应用程序中创建一个名为
Traits
的文件夹。在那里,创建一个文件
Uuids.php

将以下代码添加到
Uuids.php

<?php

namespace YourNamespace;

use Illuminate\Support\Str;

trait Uuids
{
    /**
    * Boot function from Laravel
    */
    protected static function boot()
    {
        parent::boot();

        static::creating(function ($model) {
            $model->incrementing = false;
            $model->{$model->getKeyName()} = Str::uuid()->toString();
        });
    }
}
在修改列之前,请确保将
原则/dbal
依赖项添加到composer.json文件中。DBAL库用于确定列的当前状态,并创建对列进行指定调整所需的SQL查询:

编写器需要条令/dbal

接下来创建一个迁移文件

php artisan make:migration change\u primary\u key\u type\u in\u roles\u table--table=roles
然后在您的迁移文件中。你这样做

public function up()
{
    Schema::table('roles', function (Blueprint $table) {
        $table->uuid('id')->change();
    });
}

public function down()
{
    Schema::table('roles', function (Blueprint $table) {
        $table->increments('id')->change();
    });
}
不要忘记执行
编写器转储自动加载

希望这有帮助


更新:我写了一篇关于如何实现这一点的博文

你的最佳工作状态完美谢谢much@AntwenySawe太好了,我可以帮忙。请别忘了把它标记为正确答案:)老兄,你最好了,它工作得很好,谢谢much@AntwenySawe太好了,我可以帮忙。请不要忘记将其标记为正确答案:)