搜索多个表

Search with multiple tables

我有 3 个 table 是 connected/have 关系。

  1. 帖子table有多个标签和一个类别
  2. 类别table有很多帖子
  3. 标签 table 有很多帖子

我想要一个搜索功能,我知道如何只使用帖子(基于标题)进行搜索。

我尝试在我的控制器中使用 Where 搜索每个 tables,但仍然没有成功。

public function Search(Request $request)
    {
        $search = $request->search;
        $posts = post::where('title', 'like', "%{$search}%")->paginate(5);

        return view('search', compact('posts'))->with('result', $search);
    }

例如

我有一个 post 标题 'Test' 类别 'Tost' 标签 'Tast and Tust'

所以如果我输入标题、类别或标签,我希望它显示出来。我怎样才能实现它?

你必须这样使用。

Post::where('title', 'like', '%' . Input::get('search') . '%')->get();

尝试使用 whereHas 方法(更多信息请查看 https://laravel.com/docs/5.8/eloquent-relationships#querying-relations

所以会变成这样:

Post::query()
  ->where('title', 'like', "%$search%")
  ->orWhereHas('categories', function ($query) use ($search) {
    $query->where('name', 'like', "%$search%");
  })