2012-02-21 4 views
1

私はPHP Activerecordsで作業しています。私はそれが、配列に似ているカラム名を持つテーブルで動作するようにしようとしている:配列のような列名を持つテーブルと組み合わせたPHPアクティブレコード

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

私はこの表に含まれるデータとして、配列のような列名を選ん異なります。

今、私は列のデータを使用したいとき、私は次の文

$tabelname->id 

この作品とidを返しますを使用します。 PHPの致命的なエラー:私は次のエラーを取得

$tabelname->column[1] 

:私は次のコードを使用するとメッセージでキャッチされない例外 'のActiveRecord \ UndefinedPropertyException'「を未定義のプロパティ:Tablename->コラム

表示目的のためにI次のコードを使用してこの問題を回避できます。

$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

。しかし、配列キーとして解釈するために、それを保持します。ですから、質問は「何とかエスケープすることで[1]を__get()コールに渡すことは可能ですか?」 – user1224348

+0

おっと、汚いです。 – mwhite

答えて

1

やった私は仕事に期待していなかったもの:

私が変更列名は列[1]から列_1までです。そして、私のコードでは、私は、次のメソッドを介してそれらにアクセス:

私はPHPが[1] __getに()の呼び出しを渡さないということであるlibのアクティブレコード内のより深い掘りの後に見つけることができますどのような
$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(); 
関連する問題