AsArrayObject::class,]; yang nampaknya menimbulkan masalah kerana "atribut" sudah menjadi sifat model Eloquent dan tidak' t nampaknya mempunyai sebarang alias spesifikasi nama Lajur. Jadi baris ini: $this->attribut"> Model Laravel 9 Eloquent - nama lajur dikekalkan dalam model-Soal Jawab Rangkaian PHP Cina
Model Laravel 9 Eloquent - nama lajur dikekalkan dalam model
P粉309989673
P粉309989673 2023-09-03 14:36:02
0
1
457

Saya mempunyai pangkalan data postgres dengan jadual yang mempunyai lajur yang dipanggil "atribut".

Lajur atribut adalah daripada jenis jsonb, jadi saya menggunakan penukaran Eloquent:

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

Ini nampaknya menimbulkan masalah kerana "harta" itu sudah menjadi sifat model Eloquent dan nampaknya tidak ada sebarang peruntukan untuk mengalikan nama lajur.

Jadi baris ini:

$this->attributes['a_property_of_the_attributes_jsonb_field'] = 'hello word!'; 

Nampaknya sedang mengakses atribut model Eloquent dalaman - dan bukannya medan 'atribut' dalam jadual pangkalan data saya, mengakibatkan ralat berikut:

SQLSTATE[42703]: Lajur tidak ditentukan: 7 ERROR: lajur "a_property_of_the_attributes_jsonb_field" LINE 1: kemas kini "mytable"tetapkan "a_property_of_the_attributes_jsonb_field" 

Saya tidak boleh menamakan semula lajur kerana projek bukan PHP lain menggunakan pangkalan data.

Bagaimanakah saya boleh mengakses medan Harta dalam model saya sebagai ArrayObject?

P粉309989673
P粉309989673

membalas semua (1)
P粉034571623

Penyelesaian mudah ialah menggunakan kaedah aksesor ArrayObject:

$this['attributes'] = ['x' => 'y']; $stuff = $this['attributes'];

Nota: Transformasi "atribut" masih perlu ditakrifkan untuk mengakses medan jsonb asas sebagai tatasusunan:

protected $casts = [ 'attributes' => AsArrayObject::class ];
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!