首页 > 解决方案 > 查找父记录的学说

问题描述

我正在使用类表继承如下

<?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)返回所有等于 1 的人(即员工和所有者)someProperty,而不仅仅是所有员工?

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

标签: phpsymfonyinheritancedoctrine-orm

解决方案


推荐阅读