PHP Active enregistre en combinaison avec une table avec des noms de colonne de type tableau

StackOverflow https://stackoverflow.com/questions/9385150

  •  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

Était-ce utile?

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();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top