Laravel有很多层次雄辩的关系

时间:2016-02-19 07:00:53

标签: php database laravel eloquent relationship

我有以下口才。

卷 问题, 类别, 文章, ArticleTranslation,

卷可能有很多问题。 问题可以有很多类别。 类别可以有很多文章。 文章可以有很多翻译。

那我如何从Article / ArticleTranslation获得Volume?

1 个答案:

答案 0 :(得分:1)

首先是你的模特。

..
class Volume extends Model {
  public function issues() {
    return $this->hasMany(Issue::class);
  }
}

class Issue extends Model {
  public function volume() {
    return $this->belongsTo(Volume::class);
  }
  public function categories() {
    return $this->hasMany(Category::class);
  }
}

class Category extends Model {
  public function issue() {
    return $this->belongsTo(Issue::class);
  }
  public function articles() {
    return $this->hasMany(Article::class);
  }
  public function articlesTranslated() {
    return $this->hasMany(ArticleTranslated::class);
  }
}

class Article extends Model {
  public function category() {
    return $this->belongsTo(Category::class);
  }
}
..

然后在你的代码中:

..
$articles = Articles::all();
$volumes = [];
foreach ($articles as $article) {
  $volumes[] = $article->category->issue->volume;
}
..

Docs