Modèle Laravel 9 Eloquent - noms de colonnes conservés dans le modèle
<p>J'ai une base de données Postgres avec une table qui comporte une colonne appelée "attributs". </p>
<p>La colonne d'attribut est de type jsonb, j'utilise donc la conversion Eloquent : </p>
<pre class="lang-php Prettyprint-override"><code>protected $casts = [
'attributs' => AsArrayObject::class,
];
</code></pre>
<p>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. </p>
<p>Donc cette ligne : </p>
<pre class="lang-php Prettyprint-override"><code>$this->attributes['a_property_of_the_attributes_jsonb_field'] = 'bonjour mot !';
</code></pre>
<p>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 : </p>
<pre class="brush:php;toolbar:false;">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" = ...</pre>
<p>Je ne peux pas renommer la colonne car d'autres projets non PHP utilisent la base de données. </p>
<p>Comment accéder au champ Propriété dans mon modèle en tant qu'ArrayObject ? </p>