Учение найти родительские записи - PullRequest
0 голосов
/ 03 апреля 2019

Я использую Наследование таблиц классов следующим образом

<?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);
    }
}
...