rainetro/laravel-imagebox

在Laravel中使用Eloquent模型中的图片

0.1.8 2023-07-02 14:27 UTC

This package is auto-updated.

Last update: 2024-10-01 00:11:10 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

在Laravel中使用Eloquent模型中的图片。此包提供了一个简单的方法来将图片附加到Eloquent模型,以用于您的Web应用程序。

此包受spatie/laravel-medialibrary的启发。

安装

您可以通过composer安装此包

composer require rainetro/laravel-imagebox

您可以使用以下命令发布和运行迁移

php artisan vendor:publish --provider="Rainet\ImageBox\ImageBoxServiceProvider" --tag="migrations"
php artisan migrate

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

php artisan vendor:publish --provider="Rainet\ImageBox\ImageBoxServiceProvider" --tag="config"

这是已发布的配置文件的内容

return [
    'disk' => env('IMAGE_BOX_DISK', 'public'),
    'queue_connection_name' => env('QUEUE_CONNECTION', 'sync'),
    'queue_name' => '',
    'model' => \Rainet\ImageBox\Box\Models\Image::class,
    'folder_generator' => \Rainet\ImageBox\Box\FolderGenerator\DefaultFolderGenerator::class,
];

用法

将图片附加到您的模型

确保您的模型实现了ImageBoxInterface。将ImageBoxTrait特质添加到模型中。实现registerImageCollections()方法。此方法用于定义模型的图片集合。您可以通过链式调用addImageCollection()方法定义一个或多个图片集合。实现registerImageCollectionConversions()方法。此方法用于定义图片集合的转换。在此方法内部,您可以通过链式调用addConversion()方法将转换添加到特定的图片集合。

use Illuminate\Database\Eloquent\Model;
use Rainet\ImageBox\ImageBoxInterface;
use Rainet\ImageBox\ImageBoxTrait;

class Post extends Model implements ImageBoxInterface
{
    use ImageBoxTrait;

    //  ...

    public function registerImageCollections(): void
    {
        $this
            ->addImageCollection('image')
            ->acceptsMimeTypes(['image/jpeg', 'image/jpg', 'image/png', 'image/gif', 'image/webp']);
    }

    public function registerImageCollectionConversions(): void
    {
        $this
            ->getImageCollection('image')
            ->addConversion('thumb')
            ->width(480)
            ->quality(90);

        // $this
        //     ->getImageCollection('image')
        //     ->addConversion('medium')
        //     ->width(600)
        //     ->height(600)
        //     ->quality(90);
    }
}

使用image方法将图片附加到您的模型。

$post = Post::find(1);
$post
    ->addImage($request->file('image'))
    ->toCollection('image');

您还可以使用image()images()方法检索图片。

$post->load('image');
$post->load('images');

测试(即将推出)

我们正在积极实施此包的综合测试。请关注更新,我们将继续改进测试覆盖率。

变更日志

请参阅CHANGELOG了解最近更改的详细信息。

贡献

请参阅CONTRIBUTING了解详细信息。

鸣谢

许可

MIT许可(MIT)。请参阅许可文件了解详细信息。