搜索结果基于条件关系

时间:2017-11-20 10:02:09

标签: php mysql laravel search laravel-scout

我正在为Laravel Scout使用Laravel 5.5和TNTSearch引擎。我偶然发现的问题是与Eloquent关系以及我是否可以对它们进行条件检查。 Laravel Scout包含一个类似Eloquent的where function,但它是一个愚蠢的版本,只允许列检查而不是其他任何内容。

搜索控制器

protected function search()
{
    $query = request()->input('query');

    $meta = $this->searchMeta($query, 10);
    $items = $this->searchItems($query, 10);

    return view('model.search.index')->with([
        'meta' => $meta,
        'items' => $items
    ]);
}

protected function searchMeta($query, $limit = 100)
{
    return ItemMeta::search($query, function ($tntsearch, $query, $options) use ($limit) {

        return $tntsearch->search($query, $limit);
    })->where('company_id', \Auth::user()->company_id)->get();
}

protected function searchItems($query, $limit = 100)
{
    return Item::search($query, function ($tntsearch, $query, $options) use ($limit) {
        return $tntsearch->search($query, $limit);
    })->get(); // Need to be restricted to company
}

我想要做的目标是检查项目是否与当前用户的公司相关。我通过在项company_id column上设置Meta table,然后有一个名为"meta_id"的列,这是Meta的外键。

当项目使用关系检查用户是否有权访问时,我如何仅显示当前公司的结果?如果使用Laravel Scout或TNTSearch引擎是不可能的,有没有人知道允许我这样做的替代方案?

0 个答案:

没有答案