codebuglab/laravel-media-removable

一旦数据库中删除或更新带有媒体的记录,自动从存储文件夹中删除图像、视频和音频等媒体文件

v0.0.2-beta 2022-01-26 14:01 UTC

This package is auto-updated.

Last update: 2024-09-26 20:31:35 UTC


README

一旦数据库中删除或更新带有媒体的记录,自动从存储文件夹中删除图像、视频和音频等媒体文件

Laravel media removable

目录

设置

安装

要通过 composer 安装此包,请在终端运行以下命令

composer require codebuglab/laravel-media-removable

发布

您必须使用以下 artisan 命令发布配置文件

php artisan vendor:publish --provider="CodeBugLab\MediaRemovable\MediaRemovableServiceProvider"
  • 之后,文件 media-removable.php 将发布到 config 文件夹。
  • 运行 php artisan config:clear 以更新应用程序并使用发布的文件。

说明

这里有多种方法可以使用此包在更新和删除数据库行时从您的项目中删除媒体文件。

  • 您必须使用 trait CodeBugLab\MediaRemovable\MediaRemovable

使用模型

  • 要使用模型方法,您只需添加一个私有静态参数 mediaField
  • 如果您不添加 mediaField,则包将抛出异常。
use CodeBugLab\MediaRemovable\MediaRemovable;

class MyModel extends Eloquent
{
    use MediaRemovable;

    private static $mediaFields = ['image']; //image is column_name you want to delete

}
  • 使用该方法时,包将根据已设置在 config\media_removable.php 的配置文件确定文件路径
  • 如果您想更改整个项目的文件路径,您可以从配置文件更改它或使用私有方法 mediaPath 如此
use CodeBugLab\MediaRemovable\MediaRemovable;

class MyModel extends Eloquent
{
   use MediaRemovable;

   private static $mediaFields = ['image']; //image is column_name you want to delete

   private static $mediaPath = "storage/app/public/"; //The path of you media files
}
  • 如果您在应用程序中具有复杂的媒体文件结构,您可以使用私有方法 mediaDetails 代替
use CodeBugLab\MediaRemovable\MediaRemovable;

class MyModel extends Eloquent
{
   use MediaRemovable;

   // set all columns and paths for this model
   public static $mediaDetails = [
       [
           'field' => 'image',
           'path' => 'storage/app/public/images/'
       ],
       [
           'field' => 'profile_picture',
           'path' => 'storage/app/public/profile/'
       ],
   ];
}
  • 在这里,您可以单独确定每个列的文件夹路径。

使用配置文件

  • 或者,您可以使用配置文件设置所有媒体详细信息,而不是使用模型。
  • 继续使用 MediaRemovable trait。
use CodeBugLab\MediaRemovable\MediaRemovable;

class MyModel extends Eloquent
{
    use MediaRemovable;
}
  • 然后根据需要设置您的配置文件
return [
    'path' => 'storage/app/public/',

    'fields' => ['image']
];
  • 上面的代码期望所有使用 MediaRemovable trait 的模型中都有字段 image,我们认为这不是一种实际的方式,但如果有人需要,我们仍然保留它。
  • 如果您有比这更多的细节,可以使用 details
return [
    'details' => [
        'table_name' => [
            [
                'field' => 'field_name',
                'path' => 'storage/app/public/directory/'
            ],
            [
                'field' => 'another_field_name',
                'path' => 'storage/app/public/another_directory/'
            ]
        ], 
        'another_table_name' => [
            [
                'field' => 'image',
                'path' => 'storage/app/public/'
            ]
        ]
    ]
];
  • details 数组中,我们使用表名来跟踪模型细节。
  • 您可以设置多个 tablesfields,如您所见,这种方式将使模型更加清晰,特别是如果您有多个字段。

重要通知

  • 在此包中,配置文件信息具有优先级,因此如果您同时设置了配置文件和模型中的信息,模型信息将被配置文件信息覆盖,所以请注意。

测试

要运行测试,请使用此命令 vendor/bin/phpunit

许可证

此软件包是免费软件,根据 MIT 许可证的条款分发。