Ich versuche ein Array mit Optionen in ein JSON-Datenfeld meiner Postgres-Datenbank zu speichern. Ich arbeite mit Laravel 5.5 und verwende die Erweiterung "dimsav/laravel-translatable" für Übersetzungen.Laravel bekomme eine "Array to string conversion" beim Speichern eines Arrays in einem JSON-Datenbankfeld
Mein Modell Frage sieht so aus: Namespace App;
use Illuminate\Database\Eloquent\Model;
use Dimsav\Translatable\Translatable;
class Question extends Model
{
use Translatable;
public $translatedAttributes = ['options', 'answer'];
protected $casts = [
'options' => 'array'
];
}
Das Modell QuestionTranslation sieht wie folgt aus:
namespace App;
use Illuminate\Database\Eloquent\Model;
class QuestionTranslation extends Model
{
public $timestamps = false;
public $fillable = ['options', 'answer'];
}
und der Laden Aktion im QuestionsController:
public function store(Request $request)
{
$question = new Question();
$options[1] = "test1";
$options[2] = "test2";
$question->answer = 1;
$question->options = $options;
$question->save();
}
Wenn ich versuche, diese Daten zu speichern, ich der Fehler:
Illuminate \ Database \ QueryException
Array to string conversion (SQL: insert into "question_translations" ("locale", "answer", "options", "question_id") values (en, 1, test1, 18) returning "id")
Wenn ich json_encode
verwende, $ Optionen selbst zu werfen, kann ich es ohne Probleme speichern.
Haben Sie eine Idee, warum das Laravel Casting nicht funktioniert? Vielleicht wegen der übersetzbaren Erweiterung?
ich hier helfen bekam: https://laracasts.com/discuss/channels/laravel/laravel-getting-an -array-to-string-Konvertierung - während-ein-Array-in-ein-json-Datenbank-Feld speichern – JayEJay