数据检索扩展包

之前在做管理后台开发,很多地方需要从前端搜索表单检索数据表中的数据,刚开始都是用
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 协议》,转载必须注明作者和本文链接
黑将军(Tanmo)
黑将军
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!