我有一个非常基本的关系,其中记录搜索并将其与执行搜索的用户的ID一起存储。
我正在尝试输出此日志并显示用户名而不是id。
搜索
public function user()
{
return $this->belongsTo('User');
}
用户
public function searches()
{
return $this->hasMany('Search');
}
如果我然后将Search::all();
传递给视图,我该如何回显用户名?在许多其他事情中,我尝试过:
@foreach($searches as $search)
<tr>
<td>{{ $search->user->username }}</td>
<td>{{ $search->description }}</td>
<td>{{ $search->product }}</td>
<td>{{ $search->group }}</td>
</tr>
@endforeach
非常感谢任何帮助。谢谢!
答案 0 :(得分:1)
目前,您的循环有N + 1 problem
。
您的循环将执行1个查询以检索表中的所有Searches
,然后针对每个search
执行另一个查询以检索user
。因此,如果您有20 searches
,则此循环将运行21
个查询。
<td>{{ $search->user->username }}</td>
要避免N + 1问题,请使用预先加载来加载关系。
Search::with('user')->all()
有关N + 1问题的更多信息:
http://laravel.com/docs/eloquent#eager-loading