parameterize()-Fehler in Laravel beheben

Bei der Entwicklung von Webanwendungen auf Basis des Laravel-Frameworks kann es beim Speichern eines Objektes passieren, dass folgender Fehler ausgegeben wird:

TypeError: Illuminate\Database\Grammar::parameterize(): Argument #1 ($values) must be of type array, string given, called in /Users/XXX/dev/myproject/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php on line 886

Dieser Fehler ist leider wenig aussagekräftig. Häufig ist der Hintergrund, dass ein Array von Werten in einem Textfeld gespeichert werden soll. Das muss jedoch innerhalb von Laravel speziell konfiguriert werden.

In folgendem Beispiel habe ich ein Array von skills, dass ich in einem Textfeld speichern möchte. Dazu muss im entsprechende Model (in diesem Fall Person) per cast die Umwandlung angegeben werden:

[...]
class Person extends Model {

    protected $casts = [
        'skills' => 'array'
    ];

}

Nachdem der entsprechende Code hinzugefügt wurde, sollte das Speichern des Objektes wie gewünscht funktionieren.

Schreibe einen Kommentar