Php Laravel-有没有更干净的方法来处理没有2个循环的多个关系?

Php Laravel-有没有更干净的方法来处理没有2个循环的多个关系?,php,laravel,laravel-5,Php,Laravel,Laravel 5,我使用的是Laravel的最新版本 我有两个MySQL表,分别称为“authors”和“articles” 我有两位作者,“John”和“Sam”,John有两篇文章,Sam有一篇,文章有一个“用户id”列,列中有作者的id 为了显示作者及其文章,我必须执行两个循环 @foreach($authors as $author) // Here the author names are displayed {{$author->name}} // I have to do thi

我使用的是Laravel的最新版本

我有两个MySQL表,分别称为
“authors”
“articles”

我有两位作者,
“John”
“Sam”
John
有两篇文章,
Sam
有一篇,文章有一个
“用户id”
列,列中有作者的
id

为了显示
作者
及其
文章
,我必须执行两个循环

@foreach($authors as $author)


// Here the author names are displayed
    {{$author->name}}

// I have to do this loop so I can show the articles of the Author
    @foreach($author->article as $article)
   <h3> {{$article->name}} </h3>

    @endforeach


@endforeach

我主要是问是否有一种内置的清洁方法。

是的,您可以执行以下操作:

@foreach($articles as $article)
    {{$article->author->name}}
    <h3>{{$article->name}}</h3>
@endforeach

是的,您可以执行以下操作:

@foreach($articles as $article)
    {{$article->author->name}}
    <h3>{{$article->name}}</h3>
@endforeach

由于您有更多的作者和文章,此查询将变得非常昂贵和缓慢。我不确定你的UI是如何显示作者和文章信息的,但我会考虑使用一个页面来显示作者列表(但不显示他们的文章)。然后让每个作者都有一个详细页面。在“作者详细信息”页面中,您可以列出根据作者id快速高效查询的所有文章。这将有助于您的网站更干净,查询效率更高。

由于您有更多的作者和文章,此查询将变得非常昂贵和缓慢。我不确定你的UI是如何显示作者和文章信息的,但我会考虑使用一个页面来显示作者列表(但不显示他们的文章)。然后让每个作者都有一个详细页面。在“作者详细信息”页面中,您可以列出根据作者id快速高效地查询的所有文章。这将有助于您的网站更干净,查询更高效。

为什么不检索所有文章并立即加载其作者?关系是双向的。为什么不检索所有文章并加载其作者?关系是双向的。这是懒散的。我建议在控制器中加载作者。这是lazyloaded。我建议在控制器中加载作者。这感觉不像是一个答案——更像是一个代码评论。这是一种更干净的方式来处理hasmany关系。与在一个循环中一次处理多个hasmany关系不同,您可以保证只使用一个hasmany关系。这不像是一个答案,更像是一个代码批评。这是处理hasmany关系的一种更干净的方法。与在循环中一次处理多个hasmany关系不同,您可以保证只使用一个hasmany关系。
class Article extends Model
{

    public function author(){
        return $this->belongsTo("App\Author", "user_id");
    }
}