assemble/eloquentsearch

Search and retrieve an eloquent model entity based on complex search criteria from the model relations.

1.5.1 2019-02-26 16:33 UTC

This package is auto-updated.

Last update: 2024-05-28 22:35:27 UTC


README

Installation

Add this line to your providers array:

Assemble\EloquentSearch\EloquentSearchServiceProvider::class,

Add this line to your aliases array:

'EloquentSearch' => Assemble\EloquentSearch\Facades\EloquentSearcher::class,

You will need to run php artisan vendor:publish to publish the config file to your instalation, Once run, you can find it in config/eloquenet_search.php. This config file is used to controll which models are used to search/return entities of.

Configuration

The config file can be found in the laravel config folder at config/eloquent_search.php, here you can define the classes related to your models as below.

return [
	'search_models' => [
		/* 
			Add your searchable eloquent models here, this is an example of user model usage.

			If you have your models sitting in the app root as default, something like this should find them.
			
				'user' => User::class,
	    	
	    	Otherwise if you have them elsewhere or the application cant seem to find them, try prefix them as such.
	    
	    		'user' => App\Models\User::class,

	    */
	   	
	    'user' => User::class,

	]
];

Usage

To make use of the search functionality, you will need to implement a $searchable property on your models to detail which fields and relations are searchable.

/*
*   Searchable Fields
*/
public $searchable = [
    'name', 'user_id', // fields
    'user', 'tags', // relations
];

You can also implement the method 'isSearchable' in your models for the searcher to determine if it is allowed to search/return that model.

public function isSearchable(){
	// Do your checks to determine if the model may be searched by the user
	return true;
}

This feature lets you restrict user searches to only the models they are allowed to see.