Skip to content

Create notes on eloquent models. Supports multiple note types as well as multi-tenancy

License

Notifications You must be signed in to change notification settings

enginedigital/model-notes

Repository files navigation

Create notes on eloquent models. Supports multiple note types as well as multi-tenancy

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

Create notes on eloquent models. Supports multiple note types as well as multi-tenancy.

Installation

You can install the package via composer:

composer require enginedigital/model-notes

You can publish and run the migrations with:

php artisan vendor:publish --provider="EngineDigital\Note\NoteServiceProvider" --tag="model-notes-migrations"
php artisan migrate

You can publish the config file with:

php artisan vendor:publish --provider="EngineDigital\Note\NoteServiceProvider" --tag="model-notes-config"

This is the contents of the published config file:

return [
    'note_model' => EngineDigital\Note\Note::class,
    'note_default_type' => 'none',
    'note_default_group' => 'admin',
    // key => 'formatter_class_with_invoke',
    // key => ['formatter', 'method'],
    'note_types' => [
        'none' => null, // dont touch formatted output
        'plain' => 'e', // escape in formatted output
        'html' => null, // dont touch formatted output
        'markdown' => [\Illuminate\Support\Str::class, 'markdown'],
        'json' => 'json_decode', // treat the note content as JSON
    ],
    'model_primary_key_attribute' => 'model_id',
    'encrypt_notes' => false,
    'tenant_model' => null, // App\Models\Company::class
    'tenant_resolver' => null, // a class that uses `__invoke` or a container function to get the id of the current tenant
    'author_model' => null, // App\Models\User::class
    'author_resolver' => null, // a class that uses `__invoke` or a container function to get the id of the current user
    'cache_time' => null, // cache time in seconds
    'load_with' => [], // which note relationships to eager load. Example: ['author', 'author.profile', 'author.roles'] or only specific columns ['author:id,name']
];

Usage

// User model uses EngineDigital\Note\HasNotes
$user->setNote('This is my cute little note!');

Testing

composer run test

Contributing

Please see CONTRIBUTING for details.

Credits

License

The MIT License (MIT). Please see License File for more information.

About

Create notes on eloquent models. Supports multiple note types as well as multi-tenancy

Resources

License

Security policy

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Languages