如何建模这些关系?

时间:2014-09-11 13:09:07

标签: laravel laravel-4

嗯,这些是两个简单的实体,但有许多交互让我对如何进行关系设置感到有点困惑..

所以,我有两个实体..类别和文章......看起来很简单..但这是我需要做的:

  • 类别可以是没有关系的独立模型

  • 类别可以包含其他类别

  • 类别可以包含文章

  • 文章可以是独立的(不在类别内)

您认为我如何对这些实体及其之间的关系进行建模?

1 个答案:

答案 0 :(得分: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或其他自引用表模型。