PHP-aktive Datensätze in Kombination mit einer Tabelle mit Array-ähnlichen Spaltennamen
-
28-10-2019 - |
Frage
Ich arbeite mit PHP Activerecords.Ich versuche, es mit einer Tabelle zum Laufen zu bringen, deren Spaltennamen einem Array ähneln:
tablename {
id: int,
column[1]: text,
column[2]: text,
...
column[10]: text
}
Ich habe Array-ähnliche Spaltennamen ausgewählt, da die in dieser Tabelle enthaltenen Daten variieren können.
Wenn ich nun die Daten in der Spalte verwenden möchte, würde ich die folgende Anweisung verwenden
$tabelname->id
Dies funktioniert und gibt die ID zurück.Wenn ich den folgenden Code verwende:
$tabelname->column[1]
Ich erhalte folgende Fehlermeldung: Schwerwiegender PHP-Fehler: Nicht erfasste Ausnahme 'ActiveRecord \ UndefinedPropertyException' mit der Meldung 'Undefinierte Eigenschaft: Tablename-> column
Zu Anzeigezwecken kann ich dieses Problem mit dem folgenden Code umgehen:
$tempdata = array();
foreach(tablename->attributes() as $key ->$value)
{
$tempdata[$key] = $value
}
Auf diese Weise kann ich die Daten in der Tabelle nicht aktualisieren.Hat jemand eine Lösung für den Zugriff auf die Daten zum Lesen und Schreiben?
MySQL: Serverversie: 5.1.41-3ubuntu12.8
PHP: PHP Version 5.3.2-1ubuntu4.14
Lösung
Was ich nicht erwartet hatte, war:
Ich habe die Spaltennamen von Spalte [1] in Spalte_1 geändert.Dann habe ich in meinem Code über die folgende Methode darauf zugegriffen:
$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();