2012-02-21 32 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();