themightysapien/medialibrary

基于spatie media package的媒体库。有助于复用上传的媒体。

1.3.12 2023-06-07 15:23 UTC

This package is auto-updated.

Last update: 2024-09-07 18:01:58 UTC


README

Latest Version on Packagist Total Downloads GitHub Actions

此包在Spatie Media Library包的基础上增加了可复用的库功能。

功能

  • 向库中添加媒体
  • 使用库中的媒体
  • 通过库添加媒体
  • 清空库

安装

您可以通过composer安装此包

composer require themightysapien/medialibrary
# publish config and migrations
php artisan vendor:publish --provider="Themightysapien\MediaLibrary\MediaLibraryServiceProvider" --tag="config" --tag="migrations"
# Check config files for any modifications then run
php artisan migrate

准备您的模型

只需在spatie的模型设置上添加InteractsWithMediaLibrary特质。

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Spatie\MediaLibrary\HasMedia;
use Spatie\MediaLibrary\InteractsWithMedia;
use Themightysapien\MediaLibrary\Traits\InteractsWithMediaLibrary;

class YourModel extends Model implements HasMedia
{
    use InteractsWithMedia;
    use InteractsWithMediaLibrary;
}

用法

向库中添加媒体

use Themightysapien\MediaLibrary\Facades\MediaLibrary;

$media = MediaLibrary::open($user_id)->addMedia($file);

通过库关联模型文件。

这将首先将文件添加到库中,然后将媒体关联到模型。

$model->addMediaThroughLibrary($file, $user_id)
// chain through any spatie's File Adder functions
->toMediaCollection();

关联库媒体到模型。

$model->addMediaFromLibrary($media);
// chain through any spatie's File Adder functions
->toMediaCollection();

清空库

use Themightysapien\MediaLibrary\Facades\MediaLibrary;

MediaLibrary::clear($user_id);

获取库媒体集合

use Themightysapien\MediaLibrary\Facades\MediaLibrary;

// All Media
MediaLibrary::allMedia($user_id);

// Builder
MediaLibrary::query($user_id)->limit(5)->lastest()->get();

通过API获取库媒体集合

$response = $this->json('GET', '{PREFIX_FROM_CONFIG}/tsmedialibrary', [
    'name' => 'document', // matches file and name with document
    'type' => 'pdf', //matches mime type with pdf
    'sort_by' => 'created_at',
    'sort_type' => 'DESC',
    'per_page' => 10 // default set on config
]);

['items' => $mediaCollection, 'pagination' => $pagination] = $response;

测试

composer test

变更日志

有关最近更改的更多信息,请参阅CHANGELOG

贡献

有关详细信息,请参阅CONTRIBUTING

安全

如果您发现任何安全问题,请通过电子邮件themightysapien@gmail.com而不是使用问题跟踪器。

鸣谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件

Laravel Package Boilerplate

此包是用Laravel Package Boilerplate生成的。