Laravel 9 Eloquent モデル - モデル内の列名を保持
P粉309989673
P粉309989673 2023-09-03 14:36:02
0
1
467

「attributes」という列を持つテーブルを持つ postgres データベースがあります。

属性列は jsonb 型なので、Eloquent 変換を使用します。

protected $casts = [ '属性' => AsArrayObject::class, ]; 

「プロパティ」はすでに Eloquent モデルのプロパティであり、列名のエイリアスを提供する機能がないようであるため、これは問題を引き起こすようです。

この行は次のようになります:

$this->attributes['a_property_of_the_attributes_jsonb_field'] = 'こんにちは!'; 

データベース テーブルの「属性」フィールドではなく、Eloquent モデルの内部属性にアクセスしているようです。その結果、次のエラーが発生します。

SQLSTATE[42703]: 未定義の列: 7 エラー: リレーション「mytable」の列「a_property_of_the_attributes_jsonb_field」が存在しません 行 1: "mytable" を更新します。 set "a_property_of_the_attributes_jsonb_field" = $1 where "mypk" = ...

他の非 PHP プロジェクトがデータベースを使用しているため、列の名前を変更できません。

モデルの Property フィールドに ArrayObject としてアクセスするにはどうすればよいですか?

P粉309989673
P粉309989673

全員に返信 (1)
P粉034571623

簡単な解決策は、ArrayObject アクセサー メソッドを使用することです:

リーリー

注: 基になる jsonb フィールドに配列としてアクセスするには、「属性」変換を定義する必要があります:

リーリー
いいねを押す+0
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート
    私たちについて 免責事項 Sitemap
    PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!