根据Entity-on-Doctrine和Symfony中的类名和id字段加载其他实体


Load other entities by class name and id fields in Entity on Doctrine and Symfony

我正在为以下情况寻找一种方法。我确实有一个实体可以保存其他实体的信息,这些实体可以是任何类型的entuty。通过字段组合subject_classsubject_id来识别子实体。有没有一种方法可以让Doctrine在我获取父项时自动获取这个子项?

母实体示例:

<?php
namespace Yolo'RandomBundle'Entity;
use Doctrine'ORM'Mapping as ORM;
/**
 * @ORM'Entity
 * @ORM'Table(
 *      uniqueConstraints={
 *          @ORM'UniqueConstraint(columns={"subject_id", "subject_class"})
 *      }
 * )
 */
class SwagRelation
{
    /**
     * @var int
     *
     * @ORM'Id
     * @ORM'Column(type="integer")
     * @ORM'GeneratedValue(strategy="AUTO")
     */
    private $id;
    /**
     * @var string
     *
     * @ORM'Column(type="string")
     */
    private $subjectClass;
    /**
     * @var string
     *
     * @ORM'Column(type="integer")
     */
    private $subjectId;
    /**
     * @var object
     */
    private $subject;
    /**
     * @return int
     */
    public function getId()
    {
        return $this->id;
    }
    /**
     * @return object
     */
    public function getSubject()
    {
        // Here should be returned an entity got from subject class and id!
        return $this->subject;
    }
    /**
     * @param object $subject
     *
     * @return SwagRelation
     */
    public function setSubject($subject)
    {
        $this->subject = $subject;
        $this->subjectClass = get_class($subject);
        $this->subjectId = $subject->getId();
        return $this;
    }
}

这种情况的一种方法是使用策略模式。