ModelSearch (for Laravel 5.5) allows you to search a model using an array of attributes and values. It does checks before applying searches by looking at the casts attribute, but also allows custom search attributes that provide lots of further functionality such as lists. Comes with inline operators (eg "!= something" will convert to where('name', '!=' 'something'). You can also link your model to other models so you can search and restrict your current model search by filtering against the relationships.
SearchComponents (for Laravel 5.5) provides a highly customizable search table for results from a model search.