私は長い間 Propel を使用していましたが、Doctrine を試してみたいと思います。My Propel の時代PropelObjectCollection::toArray
、(コレクション用に) またはPropelObject::toArray()
単一のレコードを使用して、PropelObject
via 配列を json に変換しました。
私の会社では、toArray メソッドをオーバーライドして、仮想列を配列に格納し、次に json 文字列を格納します。例えば:
public function toArray() {
$arr = parent::toArray();
$arr['full_name'] = $this->getFullName(); // full_name isnt part of the table, it's just a getter
return $arr;
}
これを json に変換すると、json に full_name プロパティがあり、次に Extjs ストア オブジェクト (extjs を使用) にあります。
今、私はドクトリンを試してみたいと思っていますが、ドクトリンはこれを許可していないようです. Doctrine クラスの関数またはプロパティをオーバーライドできますか、それともアノテーションによってこれを行うことができます('first_name', 'last_name', 'full_name')
か? Doctrine クラスにプロパティ $first_name、$last_name しかなく、$full_name がない場合、プロパティを含む json を生成することは可能ですか?同じことを達成するために回避しますか?
ご協力いただきありがとうございます
編集:注釈を使用する場合、JMSSerializerBundle で何かを見つけました:
use JMS\Serializer\Annotation\VirtualProperty;
私の Doctrine Entity File の一番上とサンプルメソッド
/**
*
* @VirtualProperty
* @return string
*/
public function getFullName() {
return $this->getName(). " mylastname";
}
私のjsonには、仮想プロパティfull_nameが含まれています