0

私は長い間 Propel を使用していましたが、Doctrine を試してみたいと思います。My Propel の時代PropelObjectCollection::toArray、(コレクション用に) またはPropelObject::toArray()単一のレコードを使用して、PropelObjectvia 配列を 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が含まれています

4

0 に答える 0