behzadsp/eloquent-dynamic-photos

一个用于轻松处理和管理照片存储的 Laravel Eloquent 特性。

v1.4.2 2024-06-18 05:51 UTC

This package is auto-updated.

Last update: 2024-09-18 06:17:42 UTC


README

Latest Version on Packagist Total Downloads

这是一个 Laravel Eloquent 特性,提供了一种简单且动态的方式来管理 Eloquent 模型中的照片。

安装

您可以通过 composer 安装此包

  composer require behzadsp/eloquent-dynamic-photos

您可以使用以下命令发布配置文件

php artisan vendor:publish --provider="Behzadsp\EloquentDynamicPhotos\Providers\EloquentDynamicPhotosServiceProvider"

这是上传图片的全局配置内容。

<?php

return [
    'disk' => 'public', // Disk to use for storing photos
    'root_directory' => 'images', // Root directory for photos
    'name_attribute' => 'slug', // Model attribute used for file name
    'quality' => 50, // Quality for encoding the photos
    'format' => 'webp', // Format of the stored photos
    'slug_limit' => 240, // Name limit to save in database
    'timestamp_format' => 'U', // U represents Unix timestamp
];

使用方法

安装包后,只需在 Eloquent 模型中使用 HasPhotos 特性即可

use Behzadsp\EloquentDynamicPhotos\Traits\HasPhotos;

class YourModel extends Model
{
    use HasPhotos;

    // ...
}

当然,您可以通过声明相应的方法在单个模型中覆盖某些配置。如下所示

class User extends Model
{
    use HasPhotos;

    protected function eloquentPhotoDisk()
    {
        return 'user-avatar';
    }

    protected function eloquentPhotoFormat()
    {
        return 'png';
    }
    
    protected function eloquentPhotoRootDirectory()
    {
        return 'images';
    }
    
    protected function eloquentPhotoQuality()
    {
        return '50';
    }
    
    protected function eloquentPhotoNameAttribute()
    {
        return 'slug';
    }
    
    protected function eloquentPhotoSlugLimit()
    {
        return '240';
    }
    
    protected function eloquentPhotoTimestampFormat()
    {
        return 'U';
    }
}

现在您可以在模型中使用该特性提供的方法

$model = YourModel::first();

// delete photo file only and not database column.
$model->deletePhotoFile('photo_field');

// update photo file and save it to database column.
$model->updatePhoto($photo, 'photo_field');

// get full photo path
$model->getPhotoFullPath('photo_path');

// get photo directory path
$model->getPhotoDirectoryPath();

// get photo URL
$model->photo_field_url;

测试

  composer test

许可

MIT 许可证 (MIT)。请参阅 许可文件 获取更多信息。