Skip to content

laravelir/attachmentable

Repository files navigation

  • Starts
  • Forks

Laravel attachmentable package

A package for attachment files to models

Installation

  1. Run the command below to add this package:
composer require laravelir/attachmentable
  1. Open your config/attachmentable.php and add the following to the providers array:
Laravelir\Attachmentable\Providers\AttachmentableServiceProvider::class,
  1. Run the command below to install package:
php artisan attachmentable:install
  1. Run the command below to migrate database:
php artisan migrate

Uses

First add Attachmentable trait to models that you want have attachments

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Laravelir\Attachmentable\Traits\Attachmentable;

class Post extends Model
{
    use HasFactory,
        Attachmentable;
}

and add Attachmentorable trait to User models

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Laravelir\Attachmentable\Traits\Attachmentorable;

class User extends Model
{
    use HasFactory,
        Attachmentorable;
}

Methods

in controllers, with Attachmentable trait you have these methods:

namespace App\Http\Controllers;

use App\Models\Post;

class PostController extends Controller
{
    public function index()
    {
        $file = request()->file('thumbnail');
        
        $post = Post::find(1);

        $post->attach($file, "posts/thumbnails");

        $post->attachments // return all attachments

        $post->attachment($id); // return attachment 
               
        $post->detach($id);
        
        $post->clearAttachments();
       
    }
}