PHP Active enregistre en combinaison avec une table avec des noms de colonne de type tableau
-
28-10-2019 - |
Question
Je travaille avec PHP ActiveRecords. J'essaie de le faire fonctionner avec une table qui a des noms de colonne qui ressemblent à un tableau:
tablename {
id: int,
column[1]: text,
column[2]: text,
...
column[10]: text
}
J'ai choisi des noms de colonnes de type tableau car les données contenues dans ce tableau peuvent varier.
Maintenant, quand je souhaite utiliser les données dans la colonne, j'utiliserais l'instruction suivante
$tabelname->id
Cela fonctionne et retournera l'ID; Lorsque j'utilise le code suivant:
$tabelname->column[1]
J'obtiens l'erreur suivante: PHP Erreur fatale: exception non revue 'activeRecord UndefinedPropertyException' avec le message 'Property undefined Property: TableName-> Colonne
À des fins d'affichage, je peux contourner ce problème en utilisant le code suivant:
$tempdata = array();
foreach(tablename->attributes() as $key ->$value)
{
$tempdata[$key] = $value
}
Mais de cette façon, je ne peux pas mettre à jour les données dans le tableau. Quelqu'un a-t-il une solution comment accéder aux données pour la lecture et l'écriture?
MySQL: ServerVersie: 5.1.41-3ubuntu12.8
PHP: PHP version 5.3.2-1Ubuntu4.14
La solution
Ce que je ne m'attendais pas à travailler a fait:
J'ai changé les noms de colonne de la colonne [1] à Column_1. Ensuite, dans mon code, je leur ai accédé via la méthode suivante:
$key = 1; // this is coming from a parameter
$columnname = 'column_' . $key;
$table->$columname = "new value"; // I didn't expect a variable to work as an attribute name
$table->save();