Я пытаюсь закодировать функцию поиска, которая позволяет выполнять поиск не только по категории вопроса, но и по его содержанию. Я использую PostgreSQL и его ts_vector
возможности для контента. Для категорий я хочу использовать Eloquent и Query Builder от Laravel.
Поиск контента полностью работает, но я не могу понять, как ограничить отображаемые вопросы вопросами с этими категориями. Это то, что я до сих пор:
$questions = Question::search($query_string)->paginate(NUM_PER_PAGE);
У меня также есть массив строк, которые являются именами категорий ($tag_names
). Как видно из схемы, каждое имя unique
.
Это схема:
CREATE TABLE questions (
id BIGINT PRIMARY KEY REFERENCES commentables(id) ON DELETE CASCADE,
title TEXT NOT NULL,
correct_answer BIGINT UNIQUE,
search tsvector
);
CREATE TABLE categories (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL UNIQUE,
description TEXT,
num_posts INTEGER DEFAULT 0 NOT NULL
);
CREATE TABLE questions_categories (
question_id BIGINT REFERENCES questions(id) ON DELETE CASCADE,
category_id INTEGER REFERENCES categories(id) ON DELETE CASCADE,
PRIMARY KEY (question_id, category_id)
);
Я создал классы моделей для каждой из таблиц базы данных, поэтому вы можете ссылаться на них по Question
, Category
и QuestionsCategory
.