我使用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/

10-09 08:15
查看更多