Registros ativos de PHP em combinação com uma tabela com nomes de colunas semelhantes a array
-
28-10-2019 - |
Pergunta
Estou trabalhando com PHP Activerecords.Estou tentando fazer funcionar com uma tabela que tem nomes de colunas que se assemelham a uma matriz:
tablename {
id: int,
column[1]: text,
column[2]: text,
...
column[10]: text
}
Escolhi nomes de colunas semelhantes a matrizes, pois os dados contidos nesta tabela podem variar.
Agora, quando eu quiser usar os dados da coluna, usaria a seguinte declaração
$tabelname->id
isso funciona e retornará o id;Quando eu uso o seguinte código:
$tabelname->column[1]
Recebo o seguinte erro: Erro fatal de PHP: exceção não detectada 'ActiveRecord \ UndefinedPropertyException' com a mensagem 'Propriedade indefinida: Tablename-> coluna
Para fins de exibição, posso solucionar esse problema usando o seguinte código:
$tempdata = array();
foreach(tablename->attributes() as $key ->$value)
{
$tempdata[$key] = $value
}
Mas assim não consigo atualizar os dados da tabela.Alguém tem uma solução para acessar os dados tanto para leitura quanto para escrita?
Mysql: Serverversie: 5.1.41-3ubuntu12.8
PHP: PHP versão 5.3.2-1ubuntu4.14
Solução
O que eu não esperava que funcionasse:
Mudei os nomes das colunas da coluna [1] para a coluna_1.Então, em meu código, acessei-os através do seguinte método:
$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();