数据检索扩展包
之前在做管理后台开发,很多地方需要从前端搜索表单检索数据表中的数据,刚开始都是用request()->get('key')
的方式获取搜索表单的字段,然后再调用Model
查询数据,后来感觉,在laravel这么优雅的框架中用这么low的方法检索数据实在low炸天 :joy:
所以开始在网上搜索各种扩展包,找到了一个扩展包 tom-lingham/searchy
github地址
试用了一下,感觉太麻烦了,干脆自己撸个扩展包算了
花了一天时间弄了一个初版的,功能不多,目前满足所需,以后再慢慢加功能
github地址
安装
composer require tanmo/laravel-search
使用
- 在Model中引入
Tanmo\Search\Traits\Search
Trait
<?php
use Tanmo\Search\Traits\Search;
...
class User extends Model
{
use Search;
public function roles()
{
return $this->belongsToMany('App\Role');
}
}
- 使用Facade创建搜索器
<?php
use Tanmo\Search\Query\Searcher;
use Tanmo\Search\Facades\Search;
...
class UserController extends Controller
{
public function index()
{
$searcher = Search::build(function (Searcher $searcher) {
$searcher->equal('username');
$searcher->like('realname');
});
$users = (new User())->search($searcher)->paginate(10);
}
}
- 支持的方法
$searcher->equal($field, $formField = null)
$searcher->neq($field, $formField = null)
$searcher->between($field, $formField = null)
$searcher->notBetween($field, $formField = null)
$searcher->like($field, $formField = null)
$searcher->lt($field, $formField = null)
$searcher->gt($field, $formField = null)
$searcher->in($field, $formField = null)
$searcher->notIn($field, $formField = null)
$searcher->gte($field, $formField = null)
$searcher->lte($field, $formField = null)
$formField
参数是用来绑定form表单字段的name
属性的,如果name
属性与数据表字段一致,则该参数可以忽略- 如果要搜索关联表
roles
下的name
字段的话,可以这样用$searcher->equal('roles.name', 'role_name')
,第二个参数必填
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: