https://laravel.com/docs/5.4/eloquent-mutators#attribute-castinglaravel eloquentのモデルは保存時にキャストされますか?
protected $casts = [ 'price' => 'integer', ];
これは値を取得するときにキャストされます。保存するとき、実際には$book->price = "20"
が何をするのかわかりません。おそらくそれは20を節約するでしょう。
これは私の推測です、そうですか?
何でしょう$book->someboolean
$book->someboolean = 'false'; $book->save();
$book->someboolean = '0'; $book->save();
$book->someboolean = 0; $book->save();
$book->someboolean = null; $book->save();
$casts =[ 'someboolean' -> 'boolean'];
と何も保存しますか?
試してみてください。答えは、データベースエンジンによって異なる場合もあります。 – ceejayoz
@ceejayozそれは雄弁者が私たちをその一人で去ったことを意味しますか?データベースを変更しても、コードの実行方法は変わってはならないからです。しかし、あなたが言うように、それはまさにそれをするようです。基本的にそれを変更します。 – Toskan
例として、 '$ book-> someboolean = null;'は、フィールドがヌル可能でない場合にPostgresでエラーになりますが、MySQLではうまく動作します(falseを挿入します)。 '$ casts'はほとんど(' json'のキャストはそれが保存される方法に影響を与え、IIRCの)関数は読み込みではなく書き込みに影響します。 – ceejayoz