テクニック:ORM、Doctrine 1.1.6、KohanaPHP
Doctrine1.1.6を使用。モデルをさまざまなテーブルに分散させるにはどうすればよいですか?
詳細な状況:
ID、ログイン、パスワードを含み、1つのメールアドレス、多くのアドレス、その他の関係を持つクラスEntityがあります。他に2つのクラス、CompanyとPersonがあり、Entityを拡張します。すべてのログイン情報とパスワード情報が1つの場所に保存されるように、列集計を使用してそれらを拡張したいと思います。ここで、Personクラスに特定の列(名、姓など)を追加したいのですが、これを行う方法が見つかりません。ドキュメントに示されている唯一の例は、余分な列がない例です。
現在のクラス
エンティティクラス:
クラスエンティティはDoctrine_Recordを拡張します {{ パブリック関数setTableDefinition(){ $ this-> setTableName('entity'); $ this-> hasColumn('id'、'integer'、4、array( 'type' =>'integer'、 '長さ'=>4、 '符号なし'=>0、 'primary' => true、 'autoincrement' => true、 )); $ this-> hasColumn('login'、'string'、64、array( 'タイプ'=>'文字列'、 '長さ'=>64、 '修正済み'=>false、 'primary' => false、 'notnull' => true、 'autoincrement' => false、 )); $ this-> hasColumn('password'、'string'、64、array( 'タイプ'=>'文字列'、 '長さ'=>64、 '修正済み'=>false、 'primary' => false、 'notnull' => true、 'autoincrement' => false、 )); $ this-> hasColumn('created'、'date'、null、array( 'タイプ'=>'日付'、 'primary' => false、 'notnull' => false、 'autoincrement' => false、 )); $ this-> hasColumn('modified'、'date'、null、array( 'タイプ'=>'日付'、 'primary' => false、 'notnull' => false、 'autoincrement' => false、 )); $ this-> setSubclasses(array( 'Person' => array( "type" => 1) )); } }
人物クラス:
クラスPersonはEntityを拡張します {{ パブリック関数setTableDefinition(){ $ this-> setTableName('person'); $ this-> hasColumn('id'、'integer'、4、array( 'type' =>'integer'、 '長さ'=>4、 '符号なし'=>0、 'primary' => true、 'autoincrement' => true、 )); $ this-> hasColumn('firstname'、'string'、255、array( 'タイプ'=>'文字列'、 '長さ'=>255、 '修正済み'=>false、 'primary' => false、 'notnull' => true、 'autoincrement' => false、 )); $ this-> hasColumn('insertion'、'string'、64、array( 'タイプ'=>'文字列'、 '長さ'=>64、 '修正済み'=>false、 'primary' => false、 'notnull' => false、 'autoincrement' => false、 )); $ this-> hasColumn('lastname'、'string'、255、array( 'タイプ'=>'文字列'、 '長さ'=>255、 '修正済み'=>false、 'primary' => false、 'notnull' => true、 'autoincrement' => false、 )); } }
生成されたSQL:
CREATE TABLE `person`( `id` INT AUTO_INCREMENT、 `firstname` VARCHAR(255)NOT NULL、 `挿入`VARCHAR(64)、 `lastname` VARCHAR(255)NOT NULL、 主キー( `id`) )ENGINE = INNODB CREATE TABLE `entity`(` id` INT AUTO_INCREMENT、 `login` VARCHAR(64)NOT NULL、 `password` VARCHAR(64)NOT NULL、 `作成された`DATE、 `変更された`DATE、 主キー( `id`) )ENGINE = INNODB
誰かがこれを達成する方法を教えてもらえますか?