Laravel10を使用しています。
私は次の方法で JSON 列の変換を利用します:
リーリー
たとえば、コレクション内の値を直接更新しようとする場合:
リーリー
###応答なし。
変数をそのまま代入すると正常に動作します。
リーリー
しかし、単一の要素のみを更新/追加する必要がある場合はどうすればよいでしょうか?
次の回避策を見つけましたが、これは予期された動作ですか?
リーリー
この場合、直接割り当てのみが機能しているようで、コレクションのキャストはその書き込み機能をサポートしていないようです。
コレクションに変換してみます
リーリーAsCollection
ソリューション (Laravel 8.28 以降)
'collection'
の代わりに
Illuminate\Database\ Eloquent\Casts\AsCollectionを使用する必要があります。
リーリー ###詳しくは###$casts
配列では、各キーのタイプを定義できます。 Laravel は、(必要に応じて) 型のクラスを指定することにより、変換を自動的に処理します。そのため、特にAsCollection::class
を使用することが必要です。プロパティ変換 (変換リスト)- - Laravel ドキュメント (10.x)
配列、オブジェクト、およびコレクションの変換- - Laravel ドキュメント (10.x)
Laravel 8 に新しい変換が追加されました - - Laravel ニュース
- AsCollection::class
- Laravel API ドキュメント
解決策 (Laravel 7.x 以前) AsCollection
Laravel 8.x 以降ではデフォルトで利用可能です。
古いバージョンのセット機能が必要な場合は、
カスタム キャスト を自分で作成する必要があります。 または、'array'
Actor:
を使用することもできます。 リーリー ###詳しくは###カスタム変換を実行する方法
- Laravel ドキュメント (7.x)