環境
laravel 5.8
MYSQL 5.7.26
問題
- JSON型にjsonをそのままインサート出来ない
json_encode
したデータを入れようとするとstringとして入る
- jsonのまま使わないことの方が多いので、取得したデータをjson_dencodeなど加工したくない
解決
Eloquentモデルの $casts
でインサートしたいカラムに array
を設定。
protected$casts=['column'=>'array'];
保存
配列で保存出来るようになる
$record->column=[1=>'cat',2=>'dog'];$record->save();
保存結果
{"1":"cat","2":"dog"}
取得
配列で取得できる
$column=$record->column;// [1 => 'cat', 2 => 'dog']
おわり
この仕様を知らずに独自にミューテタなど設定していました。
Eloquentモデルは色んな事が出来すぎるので、注意したいです。