2014-09-11 22 views
0

好吧,這些是兩個簡單的實體,但有很多的交互,這讓我有點困惑如何做關係設置..如何對這些關係進行建模?

所以,我有兩個實體..類別和文章..它似乎簡單.. ..但這裏有什麼,我需要做的:

  • 分類可以是沒有關係的獨立的模型

  • 類別可以包含其他類別

  • 個類別可以包含文章

  • 文章可以獨立的(不內部類)

你怎麼想,我可以將它們之間的這些實體和關係模型?

+1

我最好的猜測是類別在類別和文章上都有很多關係(並且以同樣的方式可以爲空的belongsTo關係)。外鍵仍然可以爲空,因此是「獨立」類別或文章。 – Adimeus 2014-09-11 13:17:42

回答

1

最直白:

// categories table: category_id fk categories.id nullable 

// Category model 
public function parent() 
{ 
    return $this->belongsTo('Category', 'category_id'); 
} 

public function children() 
{ 
    return $this->hasMany('Category', 'category_id'); 
} 

public function articles() 
{ 
    return $this->hasMany('Article'); 
} 

// articles table: category_id fk categories.id nullable 

// Article model 
public function category() 
{ 
    return $this->belongsTo('Category'); 
} 

記住,如果你想建立這些類別的樹,然後加載整個樹,這並不容易。如果是這種情況,你應該使用例如。 adjacency list或其他自引用表的模型。