sertxudeveloper/laravel-media-model

将媒体文件附加到您的模型

v1.3.0 2024-03-11 21:52 UTC

README

Laravel Media Model by Sertxu Developer

将媒体文件附加到您的模型

Codecov Test coverage

在开发应用程序时,您可能希望将媒体文件(如图像、视频或文档)附加到您的模型中。使用此包,您可以轻松地将媒体文件附加到模型中。

媒体文件存储在指定的磁盘上,并通过您的数据库与模型相关联。

您可以链接本地媒体文件或远程媒体文件,而无需将其下载到您的服务器。

此包与其他可用包的主要区别在于,此包允许您使用每个模型的自定义表将媒体文件与模型相关联。

允许您按模型管理媒体表,而不是为所有模型使用一个唯一的媒体表。

安装

您可以通过composer安装此包

composer require sertxudeveloper/laravel-media-model

接下来,您应该发布配置文件和迁移文件

php artisan vendor:publish --provider "SertxuDeveloper\Media\MediaServiceProvider"

然后,您可以运行新的迁移

php artisan migrate

最后,您可以使用此包!

用法

您应该修改您希望附加媒体文件的模型。

<?php

namespace App\Models;

use SertxuDeveloper\Media\HasMedia;
use SertxuDeveloper\Media\Interfaces\MediaInteraction;

class Message extends Model implements MediaInteraction
{
    use HasMedia;
}

如你所见,模型已被修改为使用 HasMedia 特性。此外,模型必须实现 MediaInteraction 接口。

分离的媒体表

如果您想为每个模型使用单独的媒体表,您应该修改您希望附加媒体文件的模型。

<?php

namespace App\Models;

use SertxuDeveloper\Media\HasMedia;
use SertxuDeveloper\Media\Interfaces\MediaInteraction;

class Message extends Model implements MediaInteraction
{
    use HasMedia;

    public function getMediaTable(): string
    {
        return 'messages_media';
    }
}

指定的表需要创建,您可以手动创建它或使用以下命令之一。

php artisan media:create-table messages_media

或者

php artisan media:create-table messages

或者

php artisan media:create-table "App\Models\Message"

附加媒体文件

一旦配置了模型,您就可以向其中附加媒体文件。例如

注意
如果您未指定磁盘,则将使用默认磁盘。

<?php

$message = Message::find(1);

$message->addMediaFromDisk(path: '/images/image.jpg', disk: 'public');

您也可以附加远程文件

注意
这不会将文件下载到您的服务器。它只会将远程文件路径添加到数据库中。

<?php

$message = Message::find(1);

$message->addMediaFromUrl('https://www.sertxudeveloper.com/assets/logo.svg');

此外,您还可以附加文件内容,这将文件保存到磁盘并将它附加到模型。

注意
如果您从外部源(如通过邮件解析器读取的电子邮件附件)获取文件内容,这非常有用。

<?php

$message = Message::find(1);

$message->addMediaFromContent(
  content: file_get_contents('/tmp/tmpA3ds2'),
  originalName: 'image.jpg',
  toFolder: 'avatars',
  toDisk: 'public'
);

测试

此包包含测试,您可以使用以下命令运行它们

composer test

贡献

有关详细信息,请参阅 CONTRIBUTING

安全漏洞

请查看 我们的安全策略 了解如何报告安全漏洞。

鸣谢

许可证

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



版权所有 © 2022 Sertxu Developer