我有以下问题:
我想创建一个即时搜索,一旦用户开始输入,我就可以通过AJAX立即获得结果。对于每个'keyup',我不想在六个表中执行额外的数据库查询,而是希望加载所有数据库记录并在我的视图中提供它们。
这样我只需要搜索我的收藏项是否包含搜索词并将其作为结果返回。
我知道我可以使用where()
方法缩小收藏范围,例如
$words = $words->where('lemma', 'mysearchterm');
return $words;
问题是,我不想检索完全匹配,但使用标准SQL查询(SELECT * FROM nouns WHERE lemma LIKE %$mysearchterm%
)中的通配符。
我该怎么做? 我现在已经试了两个小时了。 这甚至有意义吗?或者,一旦用户开始输入,每次查询数据库是否没有性能优势?有更好的方法吗?
提前致谢!
答案 0 :(得分:1)
感谢您的回答。我一定会看看Scout。我用这段代码解决了我的问题:
$result = $words->filter(function ($value, $key) {
if (strpos($value->lemma, $mysearchterm) !== false) {
return $value;
}
});