Php Laravel-有没有更干净的方法来处理没有2个循环的多个关系?
我使用的是Laravel的最新版本 我有两个MySQL表,分别称为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
“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");
}
}