sertxudeveloper / laravel-media-model
将媒体文件附加到您的模型
Requires
- php: ^8.1|^8.2
- illuminate/contracts: ^10.0|^11.0
- illuminate/database: ^10.0|^11.0
- illuminate/support: ^10.0|^11.0
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0
- phpunit/phpunit: ^9.5|^10.0
This package is auto-updated.
Last update: 2024-09-23 10:11:33 UTC
README
将媒体文件附加到您的模型
在开发应用程序时,您可能希望将媒体文件(如图像、视频或文档)附加到您的模型中。使用此包,您可以轻松地将媒体文件附加到模型中。
媒体文件存储在指定的磁盘上,并通过您的数据库与模型相关联。
您可以链接本地媒体文件或远程媒体文件,而无需将其下载到您的服务器。
此包与其他可用包的主要区别在于,此包允许您使用每个模型的自定义表将媒体文件与模型相关联。
允许您按模型管理媒体表,而不是为所有模型使用一个唯一的媒体表。
安装
您可以通过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