我使用Laravel构建应用程序,我知道LIKE并不是laravel的东西,但是我不确定总体上是否存在更好的方法。即时消息允许用户在输入字段中添加字符,第二个字符之后的类型前面会显示他们可以单击的匹配结果。一切正常,只是跳跃而缓慢。
$destinations = DB::table('destinations')->select('id','destination')
->where('published',1)
->where('destinations', 'like','%' . $request->chars . '%')
->get();
还经常发生的一件事是,如果您输入uni(对于美国),然后继续输入一个新的询问词,例如“ unite”将在“ unit”之前返回,这会使它变得跳跃。
有没有比LIKE更快的替代方法,或者我什至没有在寻找正确的东西?
最佳答案
看看Laravel Scout。它是为解决此确切问题而编写的第一方Laravel插件。
本质上,您是通过composer安装的:
$ composer require laravel/scout
发布配置:
$ php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"
然后将您的模型注册为
Searchable
:<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Laravel\Scout\Searchable;
class Destination extends Model
{
use Searchable;
}
这比每次用户键入密钥时都要用查询锤击数据库来提高性能。
关于mysql - 使用Laravel,LIKE是否可以替代获取列中另一个字符串内的字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58596110/