当在 Laravel 中只找到一条记录时如何防止未定义 属性

how to prevent undefined property when only one record found in Laravel

我想做一个搜索功能,所以我这样做了:

public function search(Request $request)
{
    $query = $request->query('q');

    $posts = DB::table('posts')->where('title', 'LIKE',  '%'.$query.'%')->get();

    return view('admin.dashboard.search')->with('users',$users)->with('posts',$posts);
}

但是当我尝试获取结果时,我遇到了一些这样的错误:

Undefined property: stdClass::$user (View: E:\laragon\www\blog\resources\views\admin\dashboard\search.blade.php)

这是这一行的错误:

<td><?php echo e($post->user->name); ?></td>

那我该如何解决呢?

你可以这样做

<td>{{ $post->user->name ? $post->user->name : 'No User Found'  }}/td>

这应该有效

您必须像这样在搜索查询中预先加载用户:

$posts = App\Post::with('user')
                   ->where('title', 'LIKE', '%'.$query.'%')
                   ->get();

您需要先在查询中设置with['user']

$posts = App\Post::with('user')->where('title', 'LIKE', '%'.$query.'%')->get();

然后你可以在你的视图中得到它:

<td>{{ $post->user->name ? $post->user->name : 'No User Found'  }}/td>

希望对您有所帮助!