PHP code example of matrix-lab / laravel-advanced-search

1. Go to this page and download the library: Download matrix-lab/laravel-advanced-search library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

matrix-lab / laravel-advanced-search example snippets


public function wheres()
{
    return [
        'status',
        // 如果传参 status=1 的话 where status = '1';
        // 如果 status 前端没有传值,那么不会构造

        'created_at.gt' => $this->fireInput('year', function ($year) {
            return carbon($year.'-01-01 00:00:00');
        }),
        // 如果 year 不传值,什么都不会构造。
        //如果传值 year=2018,那么就会执行闭包方法, 根据闭包结果构造 where year>'2018-01-01 00:00:00'

        'name.like' => $this->appendInput('name', '%'),
        // 如果 name 不传值,什么都不会构造。
        // 如果传值 name=张 ,那么就会构造 where name like '张%'

        'id.in' => $this->getInputArgs('ids', []),
        // 如果 ids 不传值,什么都不会构造,因为默认值为 [] ,构造时会被忽略。
        // 如果传值 ids=[1,3,4] ,那么就会构造 where id in (1,3,4)

        'deleted_at.is_not' => true,
        // 如果判断某个字段是否为 null ,使用 is_not 或者 is ,但是注意对应的值不能为 null ,因为值为 null 时,会被自动跳过

        'age' => [
            'gt' => 12,
            'lt' => 16,
        ],
        // where age > 12 and age < 16

        'height' => [
            'gt'  => '180',
            'lt'  => '160',
            'mix' => 'or',
        ],
        // (age > 180 or age < 160)

        DB::raw('3=4'),
        // where 3=4

        function (Builder $q) {
            $q->where('id', 4);
        },
        // where id=4

        new ModelScope('popular'),
        // 会调用的对应的模型  scopePopular 方法

        new ModelScope('older', 60),
        // 等同于
        function (Builder $q) {
            $q->older(60);
        },

        'id'  => When::make(true)->success('34'),
        // where id = 34
        'url' => When::make(false)->success('http://www.baidu.com')->fail('http://www.google.com'),
        // where url='http://www.google.com'
    ];
}

return [
	'name.like' => $this->fireInput('name', function ($value) {
         return $value.'%';
    })
];

return [
	'name.like' => $this->appendInput('name', '%')
];

return [
	'name.like' => $this->input('name').'%'
];

return [
	'name.like' => '%'
];

return [
    'id' => $this->when(user()->locked_at, 0),
];

// user()->locked_at 值存在
return [
    'id' => 0,
];

// user()->locked_at 值不存在
return [
    'id' => null,
];

'your_field_in_mysql' => $this->when($bool, function() {
    # 这里你可以写你的逻辑,最后返回值即可
    return $this->your_field_in_request/2;
    # 也可以调用一些方法
    # 如果是局部方法,能用 private 就不要用 protected 更不要用 public 定义
    return $this->yourMethodToTransform($value);

    # 同理,返回 null 的时候,这行条件不生效
    return null;
}),

return [
    DB::raw('1=0'),
];

use Illuminate\Database\Eloquent\Builder;

return [
    function (Builder $q) {
        $q->whereHas('role');
    },
];

return [
    'created_at' => [
        'gt' => '2017-09-01',
        'lt' => '2017-09-30'
    ],
];

return [
    'id' => [
        'in'  => [23, 24, 30],
        'lt'  => 25,
        'mix' => 'or'
    ],
];

return [
    new ModelScope('listByUser'),
];

return [
    new ModelScope('older', 60),
];

function (Builder $q) {
    $q->older(60);
},

return [
    'id'  => When::make(true)->success('34'),
    'url' => When::make(false)->success('http://www.baidu.com')->fail('http://www.google.com'),
];

where id = 34
where url='http://www.google.com'