2012-04-26 20 views
0

これは私のSchema.ymlの正しい構文ですか?symfonyプロジェクトの継承とsfguard

user_type_1 : 
    inheritance: 
    type:    concrete 
    extends:   sfGuardUser 
columns: 
    name: { type: string(255) } 

    user_type_2 : 
    inheritance: 
    type:    concrete 
    extends:   sfGuardUser 
columns: 
    name: { type: string(255) } 

ユーザーuser_type_1user_type_2の2種類のマイプロジェクトconsisteと私はそれらの両方がsfGuardUserから継承したい、私は継承タイプコンクリートまたはcolumn_aggregation

THXを使用shoud

答えて

0

いずれかを使用することができます。目的に応じて使い分けます。 docsから :


コンクリートコンクリート継承は子クラスごとに1つのテーブルを作成します。しかし、具体的な継承では、各クラスはすべての列(継承された列を含む)を含む表を生成します。具体的な継承を使用するには、以下に示すように、子クラスへの明示的なparent :: setTableDefinition()呼び出しを追加する必要があります。

次の例ではカラム集約
は私たちには、1つのデータベース・テーブルと呼ばれるエンティティを持っています。ユーザーとグループは両方ともエンティティであり、同じデータベース表を共有します。 エンティティテーブルには、エンティティがグループであるかユーザーであるかを示すtypeという列があります。次に、ユーザーがタイプ1でグループタイプ2であると判断します。 3つのレコード(前と同じ)を作成し、親クラスのDoctrine_Table :: setSubclasses()メソッドに呼び出しを追加するだけです。

具体的な継承を使用すると2つのテーブル(user_type_1とuser_type_2)が作成され、column_aggregationは 'type'カラムを持つ1つのテーブルのみを作成します。

+0

あなたの助けを借りて –

+1

私の答えがあなたに役立つと「受け入れられた」とマークしてください。 – Intru