使用Laravel的Eloquent查询构建

时间:2018-05-17 10:20:32

标签: php laravel postgresql eloquent laravel-query-builder

我正在尝试编写搜索功能,这不仅允许我按问题类别搜索,还可以搜索其内容。我正在使用PostgreSQL及其ts_vector功能来处理内容。对于类别,我想使用Laravel的Eloquent和Query Builder。

内容搜索完全正常,但我无法弄清楚如何将显示的问题限制为具有这些类别的问题。这就是我到目前为止所做的:

$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)
);

我为每个数据库表创建了模型类,因此您可以通过QuestionCategoryQuestionsCategory来引用它们。

1 个答案:

答案 0 :(得分:1)

<a href="{{ route('login') }}"> {{ __('Admin Login') }} </a>模型中定义<a href="{{ route('student.login') }}"> Student Login </a>关系:

categories

然后扩展您的查询:

Question