Активные записи PHP в сочетании с таблицей с именами столбцов в виде массива - PullRequest
1 голос
/ 22 февраля 2012

Я работаю с PHP Activerecords.Я пытаюсь заставить его работать с таблицей, имена столбцов которой похожи на массив:

tablename {
  id: int,
  column[1]: text,
  column[2]: text,
  ...
  column[10]: text
}

Я выбрал имена столбцов, похожие на массивы, поскольку данные, содержащиеся в этой таблице, могут различаться.

Теперь, когда я хочу использовать данные в столбце, я бы использовал следующее утверждение

$tabelname->id

, это работает и вернет идентификатор;Когда я использую следующий код:

$tabelname->column[1]

, я получаю следующую ошибку: Неустранимая ошибка PHP: необработанное исключение «ActiveRecord \ UndefinedPropertyException» с сообщением «Неопределенное свойство: Имя таблицы-> столбец

ДляВ целях отображения я могу обойти эту проблему, используя следующий код:

$tempdata = array();
foreach(tablename->attributes() as $key ->$value)
{
  $tempdata[$key] = $value
}

Но таким образом я не могу обновить данные в таблице.У кого-нибудь есть решение, как получить доступ к данным для чтения и записи?

Mysql: Serverversie: 5.1.41-3ubuntu12.8

PHP: PHP Версия 5.3.2-1ubuntu4.14

1 Ответ

1 голос
/ 23 февраля 2012

То, что я не ожидал, сделал:

Я изменил имена столбцов с столбца [1] на столбец_1. Затем в своем коде я получил к ним доступ с помощью следующего метода:

$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();
...