簡體   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