← Übersicht · Zurück zur README · Mit Einstellungen arbeiten →
Erste Schritte
Voraussetzungen
- PHP 8.3 oder neuer.
- Laravel 12 oder 13.
Paket installieren
composer require dragon-code/laravel-model-settings
Laravel erkennt den Service Provider des Pakets automatisch.
Veröffentliche die Konfiguration und Migration und erstelle danach die Einstellungstabelle:
php artisan vendor:publish --tag="model_settings"
php artisan migrate
Das Tag model_settings veröffentlicht config/model_settings.php und die Paketmigration. Die
Standardmigration erstellt eine Tabelle settings über die Standard-Datenbankverbindung der
Anwendung.
Trait hinzufügen
Füge HasSettings jedem Eloquent-Modell hinzu, das Einstellungen benötigt:
namespace App\Models;
use DragonCode\LaravelModelSettings\Concerns\HasSettings;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use HasSettings;
}
Der Trait fügt folgende öffentliche Methoden hinzu:
| Element | Verwendung |
|---|---|
settings() | Effektive Einstellungen eines gespeicherten Modells lesen oder ändern |
defaultSettings() | Standardwerte der Modellklasse lesen oder ändern |
modelSettings() | Eloquent-Relation für Eager Loading |
Erste Einstellung speichern
Erstelle einen Standardwert für alle gespeicherten User-Modelle:
(new User)->defaultSettings()->set('timezone', 'UTC');
Überschreibe diesen Wert für einen gespeicherten Benutzer:
$user = User::query()->firstOrFail();
$user->settings()->set('timezone', 'Europe/Paris');
assert($user->settings()->get('timezone') === 'Europe/Paris');
Lies alle effektiven Einstellungen als Collection, die nach Einstellungsnamen indiziert ist:
$settings = $user->settings()->all();
assert($settings->get('timezone') === 'Europe/Paris');
Entferne die Überschreibung, um wieder UTC zu verwenden:
$user->settings()->forget('timezone');
assert($user->settings()->get('timezone') === 'UTC');
Modelle zuerst speichern
Verwende settings()->set(), setMany(), forget(), forgetMany() und purge() erst, nachdem das
übergeordnete Modell gespeichert wurde. Für ein ungespeichertes Modell gibt settings()->get()
null, settings()->has() gibt false und settings()->all() eine leere Collection zurück, selbst
wenn Klassenstandards vorhanden sind. Jede Änderungsmethode löst vor einer Speicherabfrage eine
DragonCode\LaravelModelSettings\Exceptions\InvalidSettingsOwnerException aus.
Siehe auch
- Mit Einstellungen arbeiten — Priorität, Löschen, Schlüssel und Werte verstehen.
- Konfiguration — Verbindung, Tabelle oder Speichermodell auswählen.
- Eager Loading — Einstellungen für Modell-Collections effizient laden.