搜索多个表

时间:2019-04-18 20:29:02

标签: laravel laravel-5.8

我有3个已连接/具有关联的表。

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

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

我试图用控制器中的Where搜索每个表,但是还是没有运气。

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

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

例如

我有一个标题为“测试”的帖子,类别为“ Tost”,标签为“ Tast and Tust”

因此,如果我键入标题,类别或标签,我希望它显示出来。我该如何实现?

2 个答案:

答案 0 :(得分:0)

您必须这样使用。

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

答案 1 :(得分:0)

尝试使用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%");
  })