Поиск с несколькими таблицами - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть 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);
    }

Например

У меня есть пост под названием «Тест» и с категорией «Тост» и с тегами «Tast and Tust»

поэтому, если я введу заголовок, категорию или теги, я хочу, чтобы они отображались. как мне этого добиться?

Ответы [ 2 ]

0 голосов
/ 18 апреля 2019

Попробуйте использовать метод 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%");
  })

0 голосов
/ 18 апреля 2019

Вы должны использовать вот так.

Post::where('title', 'like', '%' . Input::get('search') . '%')->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...