私のpostgresデータベースのjsonデータフィールドにオプション付き配列を保存しようとしています。私はLaravel 5.5で作業しています。翻訳には "dimsav/laravel-translatable"という拡張子を使用しています。Laravelは、配列をJsonデータベースフィールドに格納しているときに "Array to string conversion"を取得しています
私のモデルの質問は次のようになります。 名前空間App。
use Illuminate\Database\Eloquent\Model;
use Dimsav\Translatable\Translatable;
class Question extends Model
{
use Translatable;
public $translatedAttributes = ['options', 'answer'];
protected $casts = [
'options' => 'array'
];
}
モデルQuestionTranslationは次のようになります。
namespace App;
use Illuminate\Database\Eloquent\Model;
class QuestionTranslation extends Model
{
public $timestamps = false;
public $fillable = ['options', 'answer'];
}
そしてQuestionsControllerにおける店舗アクション:
public function store(Request $request)
{
$question = new Question();
$options[1] = "test1";
$options[2] = "test2";
$question->answer = 1;
$question->options = $options;
$question->save();
}
私は私が手にそのデータを格納しようエラー:
Illuminate \ Database \ QueryException
Array to string conversion (SQL: insert into "question_translations" ("locale", "answer", "options", "question_id") values (en, 1, test1, 18) returning "id")
私はjson_encode
を使って$ optionsを自分でキャストできますが、問題なく保存できます。
ラーベルキャスティングが機能しない理由は何ですか?たぶん、翻訳可能な拡張機能のためでしょうか?
に動作します私はここに助けてしまった: https://laracasts.com/discuss/channels/laravel/laravel-getting-an配列から配列への変換中の配列から文字列への変換 – JayEJay