dlimars/laravel-searchable
此包的最新版本(1.3.0)没有可用的许可证信息。
为Laravel模型提供简单的特性搜索
1.3.0
2019-05-22 03:38 UTC
Requires (Dev)
- phpunit/phpunit: 4.0.*
README
一个简单的特性,用于与您的Laravel模型一起使用
安装
打开终端并运行:composer require dlimars/laravel-searchable
配置
只需在您的模型中添加
class MyModel extends Model { use Dlimars\LaravelSearchable\Searchable; private $searchable = [ 'name' => 'LIKE', 'id' => 'MATCH', 'created_at' => 'BETWEEN' ]; }
使用方法
只需在模型中调用search()
方法
$filters = [ 'name' => 'foo bar', 'id' => '10', 'created_at' => ['2010-01-01 00:00:00', '2015-01-01 23:59:59'] ]; $users = User::search($filters)->get(); // produces $query->where('name', 'LIKE', '%foo%') // ->where('name', 'LIKE', '%bar%') // ->where('id', '10') // ->where('created_at', '>=', '2010-01-01 00:00:00') // ->where('created_at', '<=', '2015-01-01 23:59:59') $filters = [ 'created_at' => ['2010-01-01 00:00:00', null] ]; // produces $query->where('created_at', '>=', '2010-01-01 00:00:00') $filters = [ 'created_at' => [null, '2015-01-01 23:59:59'] ]; // produces $query->where('created_at', '<=', '2015-01-01 23:59:59')
您还可以与请求一起使用
$users = User::search($request()->all())->get();
默认操作符
'LIKE' // produces $query->where('field', 'LIKE', '%{$value}%') 'MATCH' // produces $query->where('field', $value) 'BETWEEN' // produces $query->where('field', '>=', $value[0]) // ->where('field', '<=', $value[1])
自定义操作符
您可以在模型中创建自定义范围,并作为操作符调用。
类示例
class Customer extends EloquentModel
{
use Searchable;
public $fillable = [
'firstname',
'lastname'
];
public $searchable = [
'id' => 'MATCH',
'name' => 'myCustomSearchByName'
]
public function scopeMyCustomSearchByName($queryBuilder, $name)
{
$name = str_slug($name, "%");
$queryBuilder->where(
\DB::raw('CONCAT(firstname, " ", lastname'),
'LIKE',
"%{$name}%"
);
}
}
并调用
$filters = ['name' => 'Foo bar example'];
$customers = Customer::search($filters)->get();