Laravel Match Against
A simple macro for doing match against fulltext searches with the Eloquent ORM api, currently in beta., (*1)
Requirements
composer require sciku1/laravel-match-against, (*2)
Laravel 5.5
You're done!, (*3)
Laravel 5.x
You must register the service provider in your config/app.php, (*4)
'providers' => [
...
Sciku1\LaravelMatchAgainst\Providers\MatchAgainstServiceProvider::class,
]
Usage
To run match against queries, the field must have a fulltext index, currently there only way to do this is, (*5)
DB::statement('ALTER TABLE `table_name` ADD FULLTEXT index_name(col1, col2)');
Order
The default behaviour is to order. Example:, (*6)
Model::match(['col1', 'col2'])->against('search terms')->get();
will generate, (*7)
SELECT * FROM models ORDER BY (MATCH (col1) AGAINST ('search terms')) DESC, (MATCH (col2) AGAINST ('search terms')) DESC
Where
To limit the results, you must use whereAgainst(), (*8)
Model::match(['col1', 'col2'])->whereAgainst('search terms')->get();
will generate, (*9)
SELECT * FROM models WHERE (MATCH (col1) AGAINST ('search terms')) > 0, (MATCH (col2) AGAINST ('search terms')) > 0