Download the PHP package testmonitor/eloquent-searchable without Composer
On this page you can find all versions of the php package testmonitor/eloquent-searchable. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download testmonitor/eloquent-searchable
More information about testmonitor/eloquent-searchable
Files in testmonitor/eloquent-searchable
Package eloquent-searchable
Short Description A Laravel package that adds search functionality to Eloquent models, allowing for various search techniques such as exact and partial matches.
License MIT
Informations about the package eloquent-searchable
Eloquent Searchable
A package that provides a search feature for Eloquent models. You can define SearchAspects for your Eloquent model that use different search techniques, such as an exact match or partial match.
It is heavily inspired by Spatie's Query Builder and can be used in conjunction with this package.
Table of Contents
- Installation
- Usage
- Aspects
- Search weighing
- Search related models
- Tests
- Changelog
- Contributing
- Credits
- License
Installation
This package can be installed through Composer:
Next, publish the configuration file:
The configuration file allows you the change the HTTP parameter name as well as the minimal query length.
Usage
To add searchable functionality to your Eloquent model, follow these steps:
- Use the trait in your model(s).
- Include the searchUsing scope together with one or more SearchAspects.
Add the searchable trait on the models you want to make searchable:
Next, include the searchUsing
scope with SearchAspects
to define your
search strategy:
In this example, the controller provides a way to search through a set of users:
- Both the first and last names are searched using the “exact” strategy. Only exact matches will be returned.
- The email field is searched using the “partial” match strategy. When the query term occurs within the email address, it will be returned.
The search query is automatically derived from the HTTP request. You can
modify the HTTP query parameter in the configuration file. By default,
the name query
is used.
Aspects
A model's search strategy is defined by search aspects. An aspect defines a matching configuration. For example, the exact search aspect perfoms an exact search on the provided attribute.
Eloquent Searcheable provides multiple aspects out of the box. Additionally, you can also define your own matching configuration using the custom aspect.
Exact match
The Exact search aspect will only return matches that are equal to the search term.
Partial match
The Partial search aspect returns matches where the search query occurs anywhere within the given attribute.
JSON match
The JSON search aspect returns matches where the search query occurs anywhere within the given JSON attribute.
Prefix match
The Prefix aspect combines the exact and partial strategy with the ability to strip one or more characters from the search query. This can be useful when your application provides an incremental code with a prefix to your user (say, ISSUE-12), but only store the number in your database (which would be the number 12).
As a default, the partial match strategy is used. Using the exact
parameter, you can enable exact matching.
Custom aspect
You can create your own search aspect by creating a class that implements the TestMonitor\Searchable\Contracts\Search
contract.
Let's implement a new search aspect: a strategy that matches the beginning of an attribute. Your custom search aspect would look something like this:
To use this custom aspect, define it in your search criteria like this:
Search weighing
Optionally, you can use search weights. Weighing prioritizes search criteria, placing results with higher weights at the top.
Let's make a Post model searchable and use the following criteria:
- A partial keyword match in the post's title should be ranked highest.
- A partial keyword match in the summary should be ranked below any title match.
- A partial keyword match in the description should be ranked below any other criteria.
Here's an example that implements these criteria:
Search related models
Use dotted notation to search through related model attributes.
Let's say you want to search your posts based on their blog's title and description. Here's an example that implements these criteria:
Tests
The package contains integration tests. You can run them using PHPUnit.
Changelog
Refer to CHANGELOG for more information.
Contributing
Refer to CONTRIBUTING for contributing details.
Credits
- Thijs Kok
- Stephan Grootveld
- Frank Keulen
- All Contributors
License
The MIT License (MIT). Refer to the License for more information.
All versions of eloquent-searchable with dependencies
illuminate/support Version ^11.0|^12.0
illuminate/database Version ^11.0|^12.0
illuminate/config Version ^11.0|^12.0