4

スタッフというエンティティがあるとします。

次のような多くの永続的な属性があります。 - 名前 - 経験 - 年齢

「給与」と呼ばれる、経験と年齢に基づく「仮想」属性を作成したいと考えています。例: $salary = ($experience + $age) * 100

しかし、Salary 属性を保持したくありません。その理由は、年齢や経験値が変化するたびに Salary 属性が自動的に更新されるようにしたいからです。

これに関して 2 つの質問があります。

  • Entity ファイルは getSalary() 関数を格納するのに適した場所ですか?
  • スタッフエンティティが呼び出されるたびに、年齢と経験に基づいて計算された給与が給与変数に入力されるようにするにはどうすればよいですか?
4

1 に答える 1

6

Entity ファイルは getSalary() 関数を格納するのに適した場所ですか?

はい、そうです。

エンティティのすべてのフィールドをデータベース フィールドにマップする必要はありません。

また、エンティティには、単純なゲッターとセッター以外のメソッドを含めることができます。これらのメソッドがエンティティ フィールドで動作する限り、IMO はエンティティに属します。

スタッフエンティティが呼び出されるたびに、年齢と経験に基づいて計算された給与が給与変数に入力されるようにするにはどうすればよいですか?

エンティティがエンティティ マネージャにロードされた後に呼び出される postLoad イベントなど、Doctrine のライフサイクル イベントの 1 つを使用できます。

計算結果をプロパティに格納する必要はないことに注意してください。あなたの計算は簡単で、おそらくゲッターを定義する方が良いでしょう。

于 2013-06-01T19:38:38.890 に答える