繁体   English   中英

spatie/laravel-medialibrary 更改主键

[英]spatie/laravel-medialibrary change primary key

我正在使用 package spatie/laravel-medialibrary并且我想更改其名为 Media 的模态上的主键,而不编辑 package src 文件。

在我的项目中,我使用 uuids 作为我所有模型的主键,所以很自然,我想为这个 ZEFE90A8E604A7C6BFD762321E409CEE4AC0B6E841963CZ model 提供的 ZEFE90A8E604A7C840E88D03A867 做同样的事情。

我已经通过删除行$table->bigInteger('id')并更改行$table->uuid('uuid')->nullable();来更改迁移以反映这一点 to table->uuid('uuid')->unique()->primary();

但是,现在我还想让 model 知道我正在使用不同的密钥,方法是设置protected $primaryKey = 'uuid'; protected $keyType = 'string'; 但我找不到在 Media.php model 的包 src 文件之外执行此操作的方法

基本上,我最终要做的只是实现 HasMedia 接口并在我的 Profile model 上使用 InteractsWithMedia 特征,如下所示:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Spatie\MediaLibrary\HasMedia;
use Spatie\MediaLibrary\InteractsWithMedia;

class Profile extends Model implements HasMedia
{
    use InteractsWithMedia;
}

关于如何实现这一目标的任何建议?

谢谢。

Spatie 的媒体库 package 让您可以选择使用自己的媒体 model,如他们的文档中所述。

只需创建您的自定义 model 并扩展库的Media model。 然后,您可以修改该 csutom model 以满足您的需求。

use Spatie\MediaLibrary\MediaCollections\Models\Media as BaseMedia;

class Media extends BaseMedia
{
    protected $primaryKey = 'uuid';

    protected $keyType = 'string';

    public $incrementing = false;

    // ...
}

请记住将config/media-library.php中的media_model键设置为模型的 FQCN。

'media_model' => App\YourMediaModel::class,

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM