Laravel:按搜索词过滤收集

时间:2017-04-08 18:04:49

标签: laravel search collections filter wildcard

我有以下问题: 我想创建一个即时搜索,一旦用户开始输入,我就可以通过AJAX立即获得结果。对于每个'keyup',我不想在六个表中执行额外的数据库查询,而是希望加载所有数据库记录并在我的视图中提供它们。 这样我只需要搜索我的收藏项是否包含搜索词并将其作为结果返回。 我知道我可以使用where()方法缩小收藏范围,例如

$words = $words->where('lemma', 'mysearchterm'); return $words;

问题是,我不想检索完全匹配,但使用标准SQL查询(SELECT * FROM nouns WHERE lemma LIKE %$mysearchterm%)中的通配符。

我该怎么做? 我现在已经试了两个小时了。 这甚至有意义吗?或者,一旦用户开始输入,每次查询数据库是否没有性能优势?有更好的方法吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

感谢您的回答。我一定会看看Scout。我用这段代码解决了我的问题:

$result = $words->filter(function ($value, $key) {

    if (strpos($value->lemma, $mysearchterm) !== false) {
        return $value;
    }
});