0

2つのデータベーステーブルがあります

  1. 記事
  2. 記録

各記事は、アーカイブテーブルに複数のレコードを持つことができます。

これはアーカイブエンティティがどのように見えるかです(質問を理解するためにのみ必要とされるように示されています)

/**
 * Archive
 *
 * @ORM\Table(name="archive")
 * @ORM\Entity
 */
class Archive
{

   .....................................................

   /**
     * @var Articles
     *
     * @ORM\ManyToOne(targetEntity="Articles")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="article_id", referencedColumnName="id")
     * })
     */
     private $article;

   .....................................................

   /**
     * Set article
     *
     * @param Articles $article
     * @return Archive
     */
    public function setArticle(\Entities\Articles $article = null)
    {
        $this->article = $article;
        return $this;
    }

    /**
     * Get article
     *
     * @return Articles 
     */
    public function getArticle()
    {
        return $this->article;
    }

    ....................................................
}

このエンティティにはArticleエンティティへの参照がありますが、ArticleエンティティにはArchiveエンティティへの参照はありません。

したがって、問題は、Archive in Articleエンティティを参照する必要がありますか?また、どのようなメリットとデメリットがありますか?私が理解しているように、多くの参照があることは悪いことです(http://docs.doctrine-project.org/en/latest/reference/best-practices.html#constrain-relationships-as-much-as-possible)。それで、私がそれを必要とするかどうかを私が言うことができるその点はどこにありますか?

4

1 に答える 1

1

これは主に、アーキテクチャと利便性の決定です。

  • Article はアーカイブされたエントリについて知る必要がありますか?
  • 記事を介してアーカイブされたエントリにアクセスする必要がありますか?

最初のケースは、ほとんどの場合、データ モデルをどのように表現したいかだけです。記事は、アーカイブ内のアイテムについて知っておくべきものですか? それとも、記事について知る必要があるのはアーカイブだけですか? データモデルにおけるそれらの関係はどのようになっていますか?

2 番目のケースは、プログラミングの利便性に関するものです。記事のアーカイブされたアイテムに頻繁にアクセスする必要がある場合は$article->getArchives()、リポジトリまたはクエリを介してそれらを取得するよりも、(または何でも) 持っている方が便利です。これはデータ モデルに反する可能性があるため、両方のケースを比較検討し、モデル化の方法と最も意味のあるものを自分で決定する必要があります。

于 2012-09-12T11:12:51.033 に答える