anisaronno / laravel-media-gallery
Laravel 媒体画廊
Requires
- php: ^7.4|^8.0
- anisaronno/laravel-media-helper: *
- laravel/framework: ^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- orchestra/testbench: ^8.13
- phpunit/phpunit: ^10.4
This package is auto-updated.
Last update: 2024-09-18 06:25:18 UTC
README
目录
简介
Laravel 媒体画廊简化了 Laravel 项目中的媒体和媒体文件管理。本 README 提供了安装说明、用法示例和附加信息。
安装
要开始,请使用 Composer 安装此包
composer require anisaronno/laravel-media-gallery
发布迁移和配置
对于媒体库功能,请按照以下步骤操作
发布迁移、配置
发布迁移、工厂和种子文件
php artisan vendor:publish --tag=media-migration
发布配置文件
php artisan vendor:publish --tag=media
运行迁移
应用迁移以设置媒体存储表
php artisan migrate
用法
要在任何模型(例如,用户博客、产品)中使用媒体存储,请添加 HasMedia
特性
use AnisAronno\MediaGallery\Traits\HasMedia; use HasMedia;
Eloquent 实体工厂关系映射
对于设置具有关系映射的种子数据(例如,用户有博客,博客使用 HasMedia 特性),请在种子中使用以下代码
use App\Models\User; use AnisAronno\MediaGallery\Database\Factories\MediaFactory; User::factory(20) ->hasAttached( MediaFactory::new()->count(5) ) ->afterCreating(function (User $user) { $featuredMedia = $user->media()->first(); $featuredMedia->pivot->is_featured = true; $featuredMedia->pivot->save(); }) ->create();
按所有者检索媒体
要按用户检索媒体,请在用户/团队/管理员或其他有权上传媒体的任何模型上使用 HasMedia
特性
use AnisAronno\MediaGallery\Traits\HasMedia; use HasOwnedMedia; $user = User::find(1); // or auth()->user(); $user->ownedMedia();
当然,以下是每个部分带有子标题的更新文本
身份验证和配置
自定义身份验证保护者
您可以通过 发布配置文件 并将 'guard' 键更改为所需的身份验证保护者来自定义路由的身份验证保护者。
'guard' => ['auth'],
或者,您可以使用 API 中间件。
'guard' => ['auth:sanctum'],
限制媒体查看
将 view_all_media_anyone
设置为 false
以仅限制媒体查看为用户上传的图片;默认为 true
,允许查看所有媒体。
'view_all_media_anyone' => false,
定义管理媒体的门
在 AuthServiceProvider.php
中定义 canManageMediaContent
门,允许指定的用户管理媒体内容。
use Illuminate\Support\Facades\Gate; Gate::define('canManageMediaContent', function (User $user) { return in_array($user->email, [ 'contact@anichur.com', ]); });
缓存过期时间
设置缓存过期时间。默认值为 1440。
'cache_expiry_time' => 1440,
使用关系模型中的媒体
对于存储关系模型(例如,博客)中的媒体,请使用以下方法
- 附件:
$blog->media()->attach(array $id)
- 同步:
$blog->media()->sync(array $id)
- 删除:
$blog->media()->detach(array $id)
处理单个或特色媒体
要处理单个或特色媒体,请使用 featuredMedia
方法并在第二个参数中将 isFeatured
设置为 true
- 附件:
$blog->featuredMedia()->attach(array $id, ['is_featured' => 1])
注意:同步和删除相同;请使用 featuredMedia
而不是 featuredMedia
。
辅助方法
您还可以使用辅助方法进行媒体管理
-
对于附件:
$blog->attachMedia(array $ids, $isFeatured = false)
-
对于同步:
$blog->syncMedia(array $ids, $isFeatured = false)
-
对于删除:
$blog->detachMedia(array $ids, $isFeatured = false)
媒体 API 路由
要管理您的媒体存储,您可以使用以下路由
- 获取所有媒体:
api/media
(GET) - 获取单个媒体:
api/media/{id}
(GET) - 存储媒体:
api/media
(POST) - 删除媒体:
api/media/{id}
(DELETE) - 更新媒体:
api/media/update/{id}
(POST) - 批量删除:
media/batch-delete
(POST)
从关系模型获取媒体/媒体
要从关系模型检索媒体/媒体
-
以数组形式获取所有媒体:
$blog->media
-
仅获取特色媒体:
$blog->media
您可以访问媒体属性,如 URL、标题、mimes、大小和类型
$media->url
$media->title
$media->mimes
$media->size
$media->type
贡献指南
如果您想为此包做出贡献,请遵循我们的贡献指南。
许可证
此包是开源软件,许可协议为MIT许可证。