Я использую Наследование таблиц классов следующим образом
<?php
namespace MyProject\Model;
/**
* @Entity(repositoryClass="PersonRepository")
* @InheritanceType("JOINED")
* @DiscriminatorColumn(name="discr", type="string")
* @DiscriminatorMap({"person" = "Person", "owner" = "Owner"})
*/
abstract class Person
{
private $someProperty;
// ...
}
/** @Entity(repositoryClass="EmployeeRepository") */
class Employee extends Person
{
// ...
}
/** @Entity(repositoryClass="OwnerRepository") */
class Owner extends Person
{
// ...
}
У меня также есть репозитории для каждой сущности.Как я могу заставить EmployeeRepository::getSomething(1)
вернуть всех людей (т.е. сотрудников и владельцев), где someProperty
равен 1, а не только всех сотрудников?
<?php
namespace MyProject\Repository;
abstract class PersonRepository
{
public function getSomething($someProperty)
{
//Desire is to return both Employees and Owners
return $this->findBy(['someProperty'=>$someProperty]);
}
}
class EmployeeRepository extends PersonRepository
{
public function getSomething($someProperty)
{
if($someProperty==123) {
//Do something
}
else return parent::getSomething($someProperty);
}
}