akanaan/model-files

一个用于Laravel的包,帮助将文件附加到模型中(图片、PDF等)。

1.0.0 2020-10-04 13:29 UTC

This package is not auto-updated.

Last update: 2024-09-20 05:24:03 UTC


README

一个用于Laravel的包,帮助将文件附加到模型中(图片、PDF等)。

安装

使用包管理器 composer 安装Laravel模型文件。

composer require akanaan/model-files

运行迁移来创建表

php artisan migrate

用法

该包非常易于使用,只需将特性 HasFiles 添加到模型中,并为文件创建设置数组

<?php

namespace App\Models;

use AKanaan\ModelFiles\Traits\HasFiles;
use Illuminate\Database\Eloquent\Model;

class Product extends Model
{
    use HasFiles;

    protected $attaches = [
        'logo' => [
            'disk' => 'public',
            'path' => '/',
        ],
        'images' => [
            'disk' => 'public',
            'path' => 'images',
        ]
    ];
}

附加、分离、检索。

附加

<?php
...
$product = Product::findOrFail($id);

$product->attachFile('logo', $request->file('logo'));
$product->attachFiles('images', [
    $request->file('images.0'),
    $request->file('images.1'),
    $request->file('images.2')
    ...
]);
...

分离

<?php
...
$product = Product::findOrFail($id);

$product->detachFile('logo');
/*
 * Second param is optional (array of ids of files you want to delete)
 */
$product->detachFiles('images', [1, 2, 3]);
...

检索

<?php
...
$product = Product::findOrFail($id);

// returns instance of AKanaan\ModelFiles\Models\File
$product->retrieveFile('logo');
// returns collection of AKanaan\ModelFiles\Models\File
$product->retrieveFiles('images');
...

公开URL

<?php
...
$product = Product::findOrFail($id);

$logo = $product->retrieveFile('logo');
$publicUrl = $logo->url();
...

许可

MIT