パート1 PostgreSQLではJSONのCOLを更新した問題:メインの質問Laravel雄弁
私colours_tab
テーブル(PostgreSQLの9.6)には、私は列がタイプJSONBのcolours_json_col
と呼ばれています。 私は前述のテーブルに新しいレコードを作成し、私のLaravelコントローラに次のコードを持っている:
$colour_rec = new ColoursModel();
$colour_rec -> colours_json_col = ['fruits' => ['apple' => 'pink'] ];
$colour_rec -> update (['colours_json_col->fruits->apple' => 'green']);
$colour_rec -> saveOrFail();
上記のコードは、エラーまたは投げる例外を、まだ私の中でそれを新しいレコードを実行した後はありませんデータベースには、次のJSONデータが含まれています。
{"fruits": {"apple": "pink"}}
明らかに、私が欲しいのは、リンゴがピンクではなく緑であることです。ここの文書(https://laravel.com/docs/5.5/queries#updates)は、私が正しいものを「緑色」に設定することを示唆しています。誰かが私が間違っているのを見ることができますか?
パート2:ボーナス質問
erroringから上記のコードを防止するために、私はモデルに$fillable
として列colours_json_col
を宣言しなければならなかった:
protected $fillable = ['colours_json_col'];
私にはありません可能であれば、実際には列を$fillable
と設定したいと考えています。したがって、update()
関数を呼び出さなくても値を更新する方法はありますか? 1での質問の両方の部分に答える