我正在为以下情况寻找一种方法。我确实有一个实体可以保存其他实体的信息,这些实体可以是任何类型的entuty。通过字段组合subject_class
和subject_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;
}
}
这种情况的一种方法是使用策略模式。