hosmelq/laravel-model-preferences

Per-model preferences for Laravel with defaults and validation.

Maintainers

Package info

github.com/hosmelq/laravel-model-preferences

pkg:composer/hosmelq/laravel-model-preferences

Statistics

Installs: 1 410

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 0

This package is auto-updated.

Last update: 2026-03-02 04:20:20 UTC


README

GitHub Tests Action Status Latest Version on Packagist Total Downloads

This package provides a simple API for storing preferences on Eloquent models.

You can define defaults and validation rules, and choose where preferences are stored.

Here's a quick example:

use HosmelQ\ModelPreferences\Contracts\HasPreferences;
use HosmelQ\ModelPreferences\Models\Concerns\InteractsWithPreferences;
use HosmelQ\ModelPreferences\Support\PreferencesConfig;
use Illuminate\Database\Eloquent\Model;

class User extends Model implements HasPreferences
{
    use InteractsWithPreferences;

    public function preferencesConfig(): PreferencesConfig
    {
        return PreferencesConfig::configure()->withDefaults([
            'theme' => 'system',
        ]);
    }
}

$user = User::query()->first();

$user->preferences()->set('theme', 'dark');

$theme = $user->preferences()->get('theme');

You can customize defaults, validation rules, and storage options:

use HosmelQ\ModelPreferences\Support\PreferencesConfig;

public function preferencesConfig(): PreferencesConfig
{
    return PreferencesConfig::configure()
        ->withColumn('settings')
        ->withDefaults([
            'theme' => 'system',
        ])
        ->withDriver('column')
        ->withRules([
            'theme' => ['in:light,dark,system'],
        ]);
}

Documentation

All documentation is available on the documentation site.

Testing

composer test

Support

If this package is useful in your project, consider starring the repository and sharing feedback or improvements.

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Contributions are welcome. Please open a PR with tests and clear context for the change.

Security

If you discover any security related issues, please email hosmelq@gmail.com instead of using the issue tracker.

Credits

License

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