【问题标题】:How can I use UUID in spatie/laravel-permission如何在 spatie/laravel-permission 中使用 UUID
【发布时间】:2018-11-21 09:15:38
【问题描述】:

我使用ramsey/uuid 作为我所有项目表的主键。如何禁用自动增量并允许 rolespermissions 主键可填充?我已经设法在其他桌子上做到了,但我被这两个卡住了。

【问题讨论】:

    标签: php laravel laravel-5 eloquent laravel-permission


    【解决方案1】:

    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();
            });
        }
    }
    

    然后在您的迁移文件中,您应该有类似的内容:

    $table-&gt;uuid('id')-&gt;primary(); 替换 $table-&gt;increments('id');

    不要忘记在模型中使用 Uuids 特征;

    <?php
    
    namespace YourNamespace;
    
    use Illuminate\Database\Eloquent\Model;
    
    class Category extends Model
    {
        use Uuids;
    
        protected $guarded = [''];
        protected $casts = [
            'id' => 'string',
        ];
    ...
    

    在修改列之前,请务必将 doctrine/dbal 依赖项添加到您的 composer.json 文件中。 Doctrine DBAL 库用于确定列的当前状态并创建对列进行指定调整所需的 SQL 查询:

    composer require doctrine/dbal

    接下来创建一个迁移文件;

    php artisan make:migration change_primary_key_type_in_roles_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();
        });
    }
    

    别忘了做composer dumpautoload

    希望这会有所帮助。

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

    【讨论】:

    • 尽力而为,非常感谢您
    • @AntwenySawe 太好了,我可以帮忙。请不要忘记将其标记为正确答案:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-16
    • 2016-12-04
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    相关资源
    最近更新 更多