jzpeepz / eloquent-search
Simple searching of all the Eloquent models in your project
Requires
- php: ^7.3|^8.0
- illuminate/support: ^8.0
Requires (Dev)
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^8.5.8|^9.3.3
README
This is where your description should go. Try and limit it to a paragraph or two, and maybe throw in a mention of what PSRs you support to avoid any confusion with users and contributors.
Installation
You can install the package via composer:
composer require jzpeepz/eloquent-search
Publish the config file:
php artisan vendor:publish --tag=eloquent-search-config
Publish the views so you can customize:
php artisan vendor:publish --tag=eloquent-search-views
You might need to copy this route to your routes file if you need to add middleware or customize the search uri:
Route::get('/search', ['as' => 'eloquent-search', 'uses' => '\Jzpeepz\EloquentSearch\Http\Controllers\SearchController@index']);
Include the search box in your views:
@include('eloquent-search::search-box')
Usage
Getting Started
To make a model searchable, it needs to use the App\Traits\Searchable
trait.
All searchable models must also be included in the config/eloquent-search.php
file. This allows search abstracts to be generated with the command below.
NOTE: An exception will be thrown if any searchable models do not have url()
or getSearchDescription()
methods. See the customization section for more on those methods.
Initializing Search
Run the following command to initialize search abstracts for all searchable models.
php artisan search:init
Customization
What Gets Searched
By default, all attributes in the model will get lumped into the abstract that is searched.
To customize what gets searched, override the getSearchAbstract()
method to return a string that should be searched.
Search Results
Description (required)
Add a getSearchDescription()
method to your model that returns the description you would like.
URL (required)
Add a url()
method to your model. This provides the URL that is linked to in search.
Title
By default, Searchable will attempt to determine a good title for the result.
To customize, override the getSearchTitle()
method on your model.
Testing
composer test
Changelog
Please see CHANGELOG for more information what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email jonathan@flex360.com instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.
Laravel Package Boilerplate
This package was generated using the Laravel Package Boilerplate.