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

È stato utile?

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();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top