laravel Eloquent:关系获得第三部分关系

时间:2017-05-06 17:00:57

标签: php laravel eloquent laravel-eloquent

我在期刊项目工作,我有3个主要表相关 Volumes-> issues->制品

卷有很多问题问题有一个卷
问题有很多文章文章有一个问题

一切正常,但我有一个棘手的步骤

我希望在查看所有文章时获得卷名。我想在检索文章时查看以下内容

article name | vol name/issue name

我成功获得问题名称,因为我在文章模块问题模块之间有关系,但我不知道如何在每个文章中获取卷名

<tr>
     <th>Title</th>
     <th>Vol/Issue</th>
</tr>
@foreach($articles as $article)
  <td>{{ $article->title }}
  <td>{{ ??? }} / {{$article->issue->name}}</td>
@endforeach

1 个答案:

答案 0 :(得分:1)

假设你拥有在每个模型中设置的属于关系的行为与你的关系有很多关系:

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

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

在检索文章时,您应该能够急切加载issue关系和issue volume关系,如下所示:

$articles = Article::with(['issue', 'issue.volume'])->get();

并在您的视图中(假设您使用name属性):

{{ $article->issue->volume->name }}

有关此内容的更多信息,请查看&#34;嵌套预先加载&#34;在documentation