2016-05-13 1 views
1

私は、Fat Free PHPを使用して、結合を使用してクエリを返します。このため、結果には別のテーブルの余分なフィールドがあります。配列をオブジェクト(つまりarrayToObjects)に変換できるようにしたいが、追加のフィールドを保持したい。私は、このクラスがstdClassではなくクラスのインスタンスを返すことも望みます。F3:フィールドを追加して配列をオブジェクトに変換する方法はありますか?

PHPモデルに追加フィールドを追加しようとしましたが、mysqlの結果をarrayToObjects()に渡すと値が失われます。

これは達成可能ですか?

+0

チェックあなたの答えのためのSOのリンクhttp://stackoverflow.com/questions/1869091/how-to-convert-an-array-to-object-in-php – ahPo

+0

このstdClassに変換するために機能しますが、モデルクラスのインスタンスにしたい場合はどうすればいいですか? @ahPo – jrquick

+0

['stdClass'を別の' Class'に変換するための答えはこちらです。](http://stackoverflow.com/questions/3243900/convert-cast-an-stdclass-object-to-another-class) (ほとんどがリフレクションを使用します) – ourmandave

答えて

0

私は私の最終的なソリューションの巨大なファンではありませんが、配列からオブジェクトに手動で値を追加しました。例えば

object = new Object(); 
object->id = array['id'] 
object->name = array['name'] 
1

これは私がしばらく前に学んだシンプルで汚いトリックです。

// Create an array 
$array = range('a', 'z'); 

// Convert array to object 
$object = json_decode(json_encode($array)); 

そしてvoila!あなたが望むすべての値を持つオブジェクト。それについては何も思いません。

+0

これは動作します。しかし、私はオブジェクトのインスタンスをstdClassではないことを望んでいました。新しいマッパーを作成するのに最適なルートですか? – jrquick

0

モデルにカスタムセッターとゲッターメソッドを追加して、余分な配列やオブジェクトをロードして保存することができます。これはおそらくあなたにとって今のところ最も簡単な方法です。 リレーションをサポートしているF3 cortex ormを使用することもできます。

関連する問題