1

Symfony2 でアプリケーションを構築し、Doctrine を ORM として使用しています。

ユーザーは、ユーザー固有の構成/設定をかなり多く保存する必要があります (保存する設定の典型的な例として、「私たちからのメールを受け取りますか?」と考えてください)。

これを構築するための最良の方法は何ですか?

各設定のユーザー エンティティにプロパティを追加する必要がありますか?

protected $receiveEmails;

または、ユーザー オブジェクトとの manyToMany 関係を持つ「userSetting」エンティティを作成し、userSetting エンティティに他の 2 つのプロパティを持たせる必要があります。

protected $setting;
protected $value;

?

質問する主な理由はパフォーマンスです。特定の設定をブール型、その他の文字列などにすることができるように、ユーザーオブジェクトにプロパティを設定することをお勧めしますが、現在のユーザーエンティティを取得するたびに、サイトにこれらの値をデータベースからフェッチさせたくありません (ほぼすべての私の認証は私のデータベースのユーザーエンティティをバックオフするため)。

答えは何ですか?戻って、次の使用のインスタンスを書き直す必要がありますか?

....getRepository('AcmeMainBundle:User')->find($id)

その状況に必要な要素のみを選択するカスタム リポジトリ機能を使用しますか?

または、最適化しすぎていますか?

4

1 に答える 1

1

2つの方法があります。

ManyToMany1)あなたが言ったように、関係を持つ別のエンティティを作成します。

2)エンティティOneToOneのすべてのプロパティが設定名である関係を持つ別のエンティティを作成します。

パフォーマンスのために、2 番目のオプションを選択します。多くの列を持つ 1 つの行は、多くの 1 列の行よりも優れています。また、取り扱いと実装が簡単です。

于 2013-03-01T15:04:13.473 に答える