我已经将我的模型与我的实体分开。我有三个模型与相应的实体:Review,RatedReview和ScoredReview。他们的关系是ScoredReview延伸RatedReview延伸审查。Symfony + Doctrine:模型和继承
所以对我的模型有:
// Project/ReviewBundle/Model/Review.php
class Review
{
}
// Project/ReviewBundle/Model/RatedReview.php
class RatedReview extends Review
{
}
// Project/ReviewBundle/Model/ScoredReview.php
class ScoredReview extends RatedReview
{
}
然后,我通过扩展模型,像这样实现实体:
// Project/ReviewBundle/Entity/Review.php
use Project\ReviewBundle\Model\Review as BaseReview;
class Review extends BaseReview
{
}
// Project/ReviewBundle/Entity/RatedReview.php
use Project\ReviewBundle\Model\RatedReview as BaseRatedReview;
class RatedReview extends BaseRatedReview
{
}
// Project/ReviewBundle/Entity/ScoredReview.php
use Project\ReviewBundle\Model\ScoredReview as BaseScoredReview;
class ScoredReview extends BaseScoredReview
{
}
所以继承的模型侧发生。学说似乎无法看到这一点,并将它们映射到单独的表格。我明白这是因为教义只寻找扩展其他实体的实体,而不是扩展模型的实体。
有没有更好的方式让我将模型与实体分开,同时保留扩展实体的能力?这就是特质派上用场的地方吗?
换言之,有无论如何,我可以有一个由模型组成的树,以及由扩展这些模型的实体组成的树?
你看过主义传承吗? http://doctrine-orm.readthedocs.org/en/latest/reference/inheritance-mapping.html看起来像单表继承是你正在寻找的。 – Cerad
@Cerad我使用单表继承,它通常很棒。这里的问题是单个表继承需要实体直接相互延伸,而不是扩展相互延伸的模型。然而,我希望我的逻辑能够在模型中表达ScoredReviews,而不是在实体中。我通过使用基类的一个模型和子类的特征来解决这个问题。 – JProffitt