2015-10-26 99 views
0

協會映射我有兩個實體:與學說

用戶和 評論

每一個評論只能有一個用戶,但用戶可以有多個評論。

我不確定是否要使用biderectional,單向連接表或自引用。

我只希望在調用註釋對象時應用此關係。如果我在某處調用一個用戶對象,我不想讓一堆評論對象淹沒用戶對象。我應該採取哪種方法?

+0

使用許多的評論對象 –

+0

內的一個單向的關係這是沒有實際意義,你不會得到一堆評論的對象,除非您特別調用User-> getComments()或使用存儲庫方法,並在其中加入並特別請求註釋。 Symfony/Doctrine在默認情況下會延遲加載關聯,並且會一直處於急切加載(至少在2.3)的一對一關係的警告。 – Richard

回答

0

的Symfony的文檔解釋的過程相當不錯:http://symfony.com/doc/current/book/doctrine.html#fetching-related-objects

最重要的是,你可以很方便地訪問 產品的相關類別的事實,但該類別的數據實際上不是 檢索,直到你問該類別(即它是「懶惰加載」)。

只需創建一個ManyToOne關係,並只在需要時獲取用戶的註釋。

User實體:

<?php 
class User 
{ 
    // ... 

    /** 
    * @ORM\OneToMany(targetEntity="Comment", mappedBy="author") 
    */ 
    protected $comments; 

    public function __construct() 
    { 
     $this->comments = new ArrayCollection(); 
    } 
} 

Comment實體:

<?php 
class Comment 
{ 
    // ... 

    /** 
    * @ORM\ManyToOne(targetEntity="User", inversedBy="comments") 
    * @ORM\JoinColumn(name="user_id", referencedColumnName="id") 
    */ 
    protected $author; 
}