ogrre/laravel-media

用于laravel中轻松管理媒体的包

1.0.3 2023-12-12 15:55 UTC

This package is auto-updated.

Last update: 2024-09-13 15:24:47 UTC


README

Packagist Version GitHub License Packagist Downloads

简介

此Laravel包允许您将媒体与模型关联,以便更轻松地管理文件。

这是我的第一个包,请不要犹豫报告问题,我可能没有考虑到所有情况。

文档、安装和使用说明

请参阅文档以获取详细的安装和使用说明。

安装

此包发布了一个config/media.php文件。如果您已经有一个同名文件,您必须重命名或删除它。

您可以通过composer安装此包

composer require ogrre/laravel-media

服务提供者会自动在app.php中注册,但您可以在config/app.php中手动添加服务提供者

# config/app.php

'providers' => [
    // ...
    Ogrre\Media\MediaServiceProvider::class,
];

为了正常工作,您需要启动迁移,因此请确保您的config文件夹中有media.php,以及您的应用database/migrations文件夹中的create_media_tables.php文件。

如果不是这样,请运行以下命令

php artisan vendor:publish --provider="Ogrre\Media\MediaServiceProvider"

配置

默认情况下,Media类将使用媒体配置文件中的mime_type和disk值作为属性。您可以在config/media.php中更改这些值。

用法

此包使用两个类,即Media类和MediaFile类,来管理文件。为了管理文件,您需要将模型(例如用户)与媒体(例如头像)关联起来。因此,您首先需要创建头像媒体。

媒体

Media类作为Laravel的Eloquent模型的创建、更新等操作工作。

您可以如下创建媒体:

Media::create(['name' => "new_media"]);

在这种情况下,媒体将使用配置文件中对应默认属性创建。

否则,您可以按照经典方式操作

Media::create(['name' => "pdf_media", "mime_type" => "pdf", "disk" => "public"]);

一旦创建了媒体,您就可以将它们与具有hasMedia特征的模型关联起来。

例如User模型

class User extends Authenticatable
{
    use HasFactory, HasMedia;
    ...

User模型中关联媒体

$user = User::find(1)

// assign media by id
$user->assignMedia(1);

// assign media by name
$user->assignMedia("avatar);

// assign multipe media
$user->assignMedia(['avatar', 'new_media']);

// assign media with media object
$media = Media::find(1);
$user->assignMedia($media);

您可以检查模型是否具有媒体

// return false if user hasn't this media
$user->hasMedia($media); 

媒体文件

当一个媒体与模型关联时,您可以添加一个文件,该文件将与模型和媒体一起关联,它的工作方式类似于经典的CRUD。

public function upload(Request $request)
{
    $file = $request->file('avatar');

    $user = User::find(1);

    $user->addMediaFile($file, 'avatar');
}    

getMediaFile函数将返回包含有关文件的全部有用数据的MediaFile模型。

$user->getMediaFile('avatar');  

updateMediaFile函数将删除之前保存的文件,并将新文件保存到媒体磁盘上。

$user->updateMediaFile($file, $media);  

deleteMediaFile将删除与模型关联的Mediafile以及文件。

$user->deleteMediaFile(1);  

贡献

欢迎贡献,并将完全获得认可。我接受通过GitHub上的Pull Requests进行贡献。

支持我

Buy Me A Coffee