Читая документацию Doctrine , я нашел следующий пример:
/**
* @Entity
* @InheritanceType("SINGLE_TABLE")
* @DiscriminatorColumn(name="discr", type="string")
* @DiscriminatorMap({"person" = "Person", "employee" = "Employee"})
*/
class Person
{
/**
* @Id @Column(type="integer")
* @GeneratedValue
*/
protected $id;
/**
* @Column(type="string", length=50)
*/
protected $name;
}
/**
* @Entity
*/
class Employee extends Person
{
/**
* @Column(type="string", length=50)
*/
private $department;
}
Согласно документу, класс Employee
можно запросить следующим образом:
SELECT e FROM Entities\Employee e WHERE e.name = 'test';
Мой вопрос таков: что, если Person
и Employee
оба имеют свойство name
с разными областями действия и значениями?Например:
class Person {
private $name;
}
class Employee extends Person {
private $name;
}
Я предполагаю, что этот запрос будет выполнен для Employee::$name
:
SELECT e FROM Entities\Employee e WHERE e.name = 'test';
Тогда будет ли возможно запрос к Person::$name
, покавозвращать только экземпляры Employee?Что-то вроде:
SELECT e FROM Entities\Employee e WHERE e.parent.name = 'test';