3

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

搜索控制器

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 columnMeta table,Item 上有一个然后有一个称为"meta_id"Meta 的外键的列来做到这一点。

当项目使用关系来检查用户是否具有访问权限时,我将如何仅显示当前公司的结果?如果 Laravel Scout 或 TNTSearch 引擎无法实现,有没有人知道可以让我这样做的替代方案?

4

0 回答 0