AsArrayObject::class,]; ce qui semble poser des problèmes puisque les "attributs" sont déjà des propriétés de modèle Eloquent et ne le sont pas. Il ne semble pas y avoir de spécification de nom de colonne d'alias. Donc cette ligne : $this->attribut"> Modèle Laravel 9 Eloquent - noms de colonnes conservés dans le modèle-Questions et réponses sur le réseau chinois PHP
Modèle Laravel 9 Eloquent - noms de colonnes conservés dans le modèle
P粉309989673
P粉309989673 2023-09-03 14:36:02
0
1
455

J'ai une base de données Postgres avec une table qui comporte une colonne appelée "attributs".

La colonne d'attribut est de type jsonb, j'utilise donc la conversion Eloquent :

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

Cela semble poser des problèmes car la "propriété" est déjà une propriété de modèle Eloquent et il ne semble y avoir aucune disposition pour l'alias des noms de colonnes.

Donc cette ligne :

$this->attributes['a_property_of_the_attributes_jsonb_field'] = 'bonjour mot !'; 

Semble accéder à un attribut interne du modèle Eloquent - plutôt qu'au champ « attributs » dans ma table de base de données, ce qui entraîne l'erreur suivante :

SQLSTATE[42703] : colonne non définie : 7 ERREUR : la colonne "a_property_of_the_attributes_jsonb_field" de la relation "mytable" n'existe pas LIGNE 1 : mettre à jour "mytable" défini "a_property_of_the_attributes_jsonb_field" = $1 où "mypk" = ...

Je ne peux pas renommer la colonne car d'autres projets non PHP utilisent la base de données.

Comment accéder au champ Propriété dans mon modèle en tant qu'ArrayObject ?

P粉309989673
P粉309989673

répondre à tous (1)
P粉034571623

La solution simple consiste à utiliser la méthode d'accesseur ArrayObject :

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

Remarque : La transformation "attributs" doit encore être définie pour accéder au champ jsonb sous-jacent sous forme de tableau :

protected $casts = [ 'attributes' => AsArrayObject::class ];
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!