我正在尝试减少执行的SQL查询的数量。我有一个帖子,我想找该帖子的作者并在页面上列出。为了减少SQL查询的数量,我有以下代码:
$posts = Post:all();
$posts->load('user');
$posts->first()->user;
我收到错误/通知“试图获取非对象的属性'user'”。如何摆脱这个错误?
答案 0 :(得分:1)
提前加载会将此操作减少到仅2个查询
public function example()
{
$posts = Posts::with('user')->get();
foreach ($posts as $post) {
echo $post->user->name;
}
}
答案 1 :(得分:0)
如果您有一个帖子(一个帖子),也许最好使用find方法。像这样的东西:
$post = Post::find($id);
return $post->user;
答案 2 :(得分:0)
由于您尝试访问的帖子(或第一篇帖子)与任何用户都不相关,因此可能出现错误。您可以尝试这样做以避免错误。
$posts = Post:all();
$posts->load('user');
// Try any one of below.
1) $posts->first()->user ?? '';
2) $posts->first()->user or ''; // in Laravel 5.5 or below