Dan*_* R. 2 php uuid primary-key laravel laravel-medialibrary
我正在使用包spatie/laravel-medialibrary,我想更改其名为 Media 的模式上的 PrimaryKey,而不编辑包 src 文件。
在我的项目中,我使用 uuid 作为所有模型的主键,因此自然地,我想对此包提供的 Media.php 模型执行相同的操作。
我已经更改了迁移以反映这一点,通过删除该行$table->bigInteger('id')并将其更改$table->uuid('uuid')->nullable();为table->uuid('uuid')->unique()->primary();
但是,现在我还想让模型知道我正在使用不同的密钥,通过设置protected $primaryKey = 'uuid';,protected $keyType = 'string';但我找不到在 Media.php 模型的包 src 文件之外执行此操作的方法
基本上,我最终想要做的只是实现 HasMedia 接口并在我的 Profile 模型上使用 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;
}
Run Code Online (Sandbox Code Playgroud)
关于如何实现这一目标有什么建议吗?
谢谢。
Spatie 的 medialibrary 包使您可以选择使用自己的媒体模型,如其文档中所述。
只需创建您的自定义模型并扩展库的Media模型即可。然后,您可以修改该自定义模型以满足您的需求。
use Spatie\MediaLibrary\MediaCollections\Models\Media as BaseMedia;
class Media extends BaseMedia
{
protected $primaryKey = 'uuid';
protected $keyType = 'string';
public $incrementing = false;
// ...
}
Run Code Online (Sandbox Code Playgroud)
请记住将media_model密钥设置config/media-library.php为模型的 FQCN。
'media_model' => App\YourMediaModel::class,
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2682 次 |
| 最近记录: |