Doctrine의 설명서에서 약간 혼란스러워서 도움을받을 수 있습니다. 다음과 같은 클래스 상속 있습니다 :Doctrine2 클래스 테이블 상속
<?php
class User
{
/**
* @var int
*/
private $_id;
/**
* @var Role
*/
private $_role;
}
class Company extends User
{
}
class Customer extends User
{
...
}
class Role
{
/**
* @var int
*/
private $_id;
}
?>
각 클래스를 별도의 테이블에 저장하고 싶습니다. 역할은 id에 의한 사용자 유형을 정의합니다. 이 문제를 어떻게 해결할 수 있습니까? 나는 이것을 시도했다 :
<?php
/**
* @Entity
* @Table(name="user")
* @InheritanceType("JOINED")
* @DiscriminatorColumn(name="role_id", type="integer")
* @DiscriminatorMap({"1" = "User", "2" = "Customer"})
*/
class User
{
...
}
?>
나는이 시나리오에서 역할 클래스를 다루는 방법을 모르겠다.
답장을 보내 주셔서 감사합니다. 지금이 시도하고 다음과 같은 오류 있어요 : 나는 다음 코드 한
[Doctrine\DBAL\Schema\SchemaException]
There is no column with name '_id' on table 'customer'.
:
<?php
/**
* Class Sb_User
*
* @Entity
* @Table(name="user")
* @InheritanceType("JOINED")
* @DiscriminatorColumn(name="role_id", type="integer")
* @DiscriminatorMap({"2" = "Sb_Customer", "8" = "Sb_Pos"})
*/
class Sb_User implements Sb_User_Interface
{
/**
* @Id
* @GeneratedValue
* @Column(name="id", type="integer")
* @var int
*/
protected $_id;
...
}
/**
* Class Sb_Customer
*
* @Entity
* @EntityResult(discriminatorColumn="role_id")
* @Table(name="customer")
*
*/
class Sb_Customer extends Sb_User implements Sb_Customer_Interface
{
....
}
나는 내가 잘못 뭐하는 거지 모르겠어요. 너 나 좀 도와 줄 수있어?
?>