Record attivi PHP in combinazione con una tabella con nomi di colonne simili ad array
-
28-10-2019 - |
Domanda
Sto lavorando con PHP Activerecords.Sto cercando di farlo funzionare con una tabella che ha nomi di colonne che assomigliano a un array:
tablename {
id: int,
column[1]: text,
column[2]: text,
...
column[10]: text
}
Ho scelto nomi di colonne simili ad array poiché i dati contenuti in questa tabella possono variare.
Ora, quando voglio utilizzare i dati nella colonna, dovrei usare la seguente dichiarazione
$tabelname->id
funziona e restituirà l'id;Quando utilizzo il codice seguente:
$tabelname->column[1]
Ottengo il seguente errore: Errore irreversibile PHP: eccezione non rilevata "ActiveRecord \ UndefinedPropertyException" con messaggio "Proprietà non definita: Tablename-> colonna
Per motivi di visualizzazione posso aggirare questo problema utilizzando il seguente codice:
$tempdata = array();
foreach(tablename->attributes() as $key ->$value)
{
$tempdata[$key] = $value
}
Ma in questo modo non posso aggiornare i dati nella tabella.Qualcuno ha una soluzione su come accedere ai dati sia in lettura che in scrittura?
Mysql: Serverversie: 5.1.41-3ubuntu12.8
PHP: versione PHP 5.3.2-1ubuntu4.14
Soluzione
Quello che non mi aspettavo funzionasse:
Ho cambiato i nomi delle colonne dalla colonna [1] alla colonna_1.Quindi nel mio codice li ho acceduti tramite il seguente metodo:
$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();