기술을 사용하여 확장 된 모델을 확장 : ORM, 교리 1.1.6, KohanaPHP교리 열 집계를
교리 1.1.6와 함께. 다른 테이블에 모델을 퍼뜨리는 방법은 무엇입니까?
자세한 상황 :
이 나는 ID, 로그인 및 암호를 포함하고 하나 EMAILADDRESS, 많은 주소와 다른 관계가있는 클래스의 엔티티가 있습니다. 엔티티를 확장하는 두 개의 다른 클래스 인 Company와 Person이 있습니다. Column aggregation을 사용하여 확장하려면 모든 로그인 및 비밀번호 정보가 한 곳에서 저장됩니다. 이제 Person 클래스 (성, 성 등)에 특정 열을 추가하고 싶지만이를 수행하는 방법을 찾을 수 없습니다. 문서에서 제공하는 유일한 예는 추가 열이없는 것입니다.
현재 클래스
Entity 클래스 :
class Entity extends Doctrine_Record { public function setTableDefinition() { $this->setTableName('entity'); $this->hasColumn('id', 'integer', 4, array( 'type' => 'integer', 'length' => 4, 'unsigned' => 0, 'primary' => true, 'autoincrement' => true, )); $this->hasColumn('login', 'string', 64, array( 'type' => 'string', 'length' => 64, 'fixed' => false, 'primary' => false, 'notnull' => true, 'autoincrement' => false, )); $this->hasColumn('password', 'string', 64, array( 'type' => 'string', 'length' => 64, 'fixed' => false, 'primary' => false, 'notnull' => true, 'autoincrement' => false, )); $this->hasColumn('created', 'date', null, array( 'type' => 'date', 'primary' => false, 'notnull' => false, 'autoincrement' => false, )); $this->hasColumn('modified', 'date', null, array( 'type' => 'date', 'primary' => false, 'notnull' => false, 'autoincrement' => false, )); $this->setSubclasses(array( 'Person' => array("type" => 1) )); } }
사람 클래스 :
class Person extends Entity { public function setTableDefinition() { $this->setTableName('person'); $this->hasColumn('id', 'integer', 4, array( 'type' => 'integer', 'length' => 4, 'unsigned' => 0, 'primary' => true, 'autoincrement' => true, )); $this->hasColumn('firstname', 'string', 255, array( 'type' => 'string', 'length' => 255, 'fixed' => false, 'primary' => false, 'notnull' => true, 'autoincrement' => false, )); $this->hasColumn('insertion', 'string', 64, array( 'type' => 'string', 'length' => 64, 'fixed' => false, 'primary' => false, 'notnull' => false, 'autoincrement' => false, )); $this->hasColumn('lastname', 'string', 255, array( 'type' => 'string', 'length' => 255, 'fixed' => false, 'primary' => false, 'notnull' => true, 'autoincrement' => false, )); } }
SQL 생성 :
CREATE TABLE `person` ( `id` INT AUTO_INCREMENT, `firstname` VARCHAR(255) NOT NULL, `insertion` VARCHAR(64), `lastname` VARCHAR(255) NOT NULL, PRIMARY KEY(`id`) ) ENGINE = INNODB CREATE TABLE `entity` (` id` INT AUTO_INCREMENT, `login` VARCHAR(64) NOT NULL, `password` VARCHAR(64) NOT NULL, `created` DATE, `modified` DATE, PRIMARY KEY(`id`) ) ENGINE = INNODB
수 누군가 이걸 어떻게 할 수 있는지 말해줘?
@Larry_Croft의 간접을 남길 수 있습니다 : 그러니까 기본적으로 내가 원하는 걸 할 수 없습니다? 나는 개인 정보와 회사 정보를 하나의 테이블에 둘 필요가 있습니까? –
예, 적어도 열 집합과 관련 있습니다.내 대답에 대체 솔루션을 추가하겠습니다. –
감사합니다. 당신은 나의 오래된 상황을 제안합니다 (아무런 모욕, 당신은 알 수 없습니다). 나는 너의 생각을 확장하려고 노력할 것 같다. 도와 주셔서 다시 한 번 감사드립니다! –