需要一些帮助吗?
我有2个类,一个Parent类,比如Person和一个Child说Employee使用Doctrine 2的类表继承映射策略。类的相应表存在于单独的数据库表中:Person表存在于数据库中:dbOne和Employee表位于dbTwo中。
这些课程如下:
/**
* @Entity
* @InheritanceType("JOINED")
* @DiscriminatorColumn(name="discr", type="string")
* @DiscriminatorMap({"person" = "Person", "employee" = "Employee"})
* @Table(name="Person")
*/
class Person
{
和子类
/**
* @Entity
* @Table(name="Employee")
*/
class Employee extends Person
{
Employee表的架构如下所示:
CREATE TABLE Employee (
id INT NOT NULL,
department VARCHAR(50) NOT NULL,
PRIMARY KEY(id)
) ENGINE = InnoDB;
ALTER TABLE Employee ADD FOREIGN KEY (id) REFERENCES **dbOne.Person**(id) ON DELETE CASCADE
实际上有两个问题。
$这 - > entityManager->冲洗();
在Person对象上,它标记错误:
Message: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'dbOne.Employee' doesn't exist
如果我调用实体管理器(对于dbTwo)来保存Employee对象,则反之亦然。 当表位于同一数据库中时,不存在该问题。我该如何解决这个问题?另外,如何检索实体管理器在flush()操作期间使用的SQL查询?知道生成和使用什么SQL会很有帮助 - 比如:
$this->entityManager->getQuery();
//显然这只是为了解释我的意思