A package for attachment files to models
- Run the command below to add this package:
composer require laravelir/attachmentable
- Open your config/attachmentable.php and add the following to the providers array:
Laravelir\Attachmentable\Providers\AttachmentableServiceProvider::class,- Run the command below to install package:
php artisan attachmentable:install
- Run the command below to migrate database:
php artisan migrate
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;
}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();
       
    }
}