2012-02-21 59 views
1

我正在使用PHP Activerecords。我试图使其与具有相似于阵列列名的工作表中:PHP活动记录结合一个类似数组的列名称表

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

我拿起阵列状的列名作为此表中包含的数据可以改变。

现在,当我想用​​数据列,我会用下面的语句

$tabelname->id 

这个工程将返回的ID;当我使用下面的代码:

$tabelname->column[1] 

我得到以下错误: PHP致命错误:未捕获的异常的ActiveRecord \ UndefinedPropertyException'有消息“未定义的属性:Tablename->列

为了显示我的目的可以使用以下代码来解决此问题:

$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

+0

挖的活动记录的lib是,PHP不通过[1]到__get()调用更深后,我能找到什么。但保留它,将其解释为数组键。所以问题变成“是否有可能通过以某种方式转义他们而将[1]传递给__get()调用?” – user1224348 2012-02-22 21:33:15

+0

哦,这很脏。 – mwhite 2012-03-06 09:23:40

回答

1

我没想到工作什么了:

我改变从列[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();