ホームページ  >  に質問  >  本文

Laravel Eloquent 列キャストをコレクションに更新する方法

Laravel10を使用しています。

私は次の方法で JSON 列の変換を利用します:

リーリー

たとえば、コレクション内の値を直接更新しようとする場合:

リーリー ###応答なし。

変数をそのまま代入すると正常に動作します。

リーリー

しかし、単一の要素のみを更新/追加する必要がある場合はどうすればよいでしょうか?

次の回避策を見つけましたが、これは予期された動作ですか?

リーリー

この場合、直接割り当てのみが機能しているようで、コレクションのキャストはその書き込み機能をサポートしていないようです。

P粉741678385P粉741678385177日前344

全員に返信(2)返信します

  • P粉019353247

    P粉0193532472024-03-31 00:48:23

    コレクションに変換してみます AsCollection

    リーリー

    返事
    0
  • P粉668113768

    P粉6681137682024-03-31 00:03:22

    ソリューション (Laravel 8.28 以降)

    'collection' の代わりに Illuminate\Database\ Eloquent\Casts\AsCollection を使用する必要があります。

    $casts 配列では、各キーのタイプを定義できます。 Laravel は、(必要に応じて) 型のクラスを指定することにより、変換を自動的に処理します。そのため、特に AsCollection::class< /a> を使用することが必要です。

    リーリー ###詳しくは###



    解決策 (Laravel 7.x 以前)

    AsCollection

    Laravel 8.x 以降ではデフォルトで利用可能です。 古いバージョンのセット機能が必要な場合は、カスタム キャスト を自分で作成する必要があります。 または、

    'array'Actor: を使用することもできます。 リーリー ###詳しくは###

    カスタム変換を実行する方法
    - Laravel ドキュメント (7.x)
    • 返事
      0
  • キャンセル返事