a simple php trait for laravel >= 5.0 to search in models and related models
Simply Run the Composer require comand.
composer require beaumind/searchable
Add the trait to your model and your search rules.
use Beaumind\Searchable\Searchable;
class Post extends \Eloquent
{
use Searchable;
/**
* Searchable columns.
*
* @var array
*/
public $searchable_fields = [
title,
body,
user.name,
uesr.email
];
public function user()
{
return $this->belongsTo('User');
}
}
Now you can search your model.
// Simple search
$posts = Post::search($query)->get();
// Search and get relations
// It will not get the relations if you don't do this
$posts = Post::search($query)
->with('user')
->get();
As easy as laravel default queries
// Search with relations and paginate
$posts = Post::search($query)
->with('user')
->paginate(20);
Search method is compatible with any eloquent method. You can do things like this:
// Search only active posts
$posts = Post::where('status', 'active')
->search($query)
->paginate(20);