ruhulfbr/array-qry

在 `Array` 上执行数据检索查询,类似于 Laravel 查询构建器

v1.0.0 2024-05-10 13:58 UTC

This package is auto-updated.

Last update: 2024-09-10 14:56:28 UTC


README

对数组进行查询 允许你在数组上执行查询。

使用场景

如果你需要在数组上执行一些查询,则此包适合你

  • 执行 SELECT 查询
  • 执行 WHERE 查询(where、orWhere、whereIn、whereDate 等)
  • 执行排序
  • 执行限制和偏移量
  • 执行聚合查询(count、sum、avg、max、min)

安装

要安装此包,可以使用 Composer

composer require ruhulfbr/array-qry

基本用法

要实例化 ArrayQ,请执行以下操作

require_once 'vendor/autoload.php';
use Ruhul\ArrayQuery\ArrayQ;

$array = [
    [
        'id' => 1,
        'name' => 'John Doe',
        'email' => 'john.doe@example.com',
        'age' => 25,
        'dob' => '1999-05-15',
        'company' => [
            'name' => 'ABC Company',
            'catchPhrase' => 'Innovative solutions for businesses',
            'bs' => 'Transforming industries through technology'
        ]
    ],
    [
        'id' => 2,
        'name' => 'Jane Smith',
        'email' => 'jane.smith@example.com',
        'age' => 30,
        'dob' => '1994-08-20',
        'company' => [
            'name' => 'XYZ Corporation',
            'catchPhrase' => 'Empowering companies to succeed',
            'bs' => 'Driving growth and innovation'
        ]
    ],
    [
        'id' => 3,
        'name' => 'Alice Johnson',
        'email' => 'alice.johnson@example.com',
        'age' => 35,
        'dob' => '1989-12-10',
        'company' => [
            'name' => 'PQR Enterprises',
            'catchPhrase' => 'Delivering excellence to clients',
            'bs' => 'Building a better future together'
        ]
    ]
];


try {
    $result = ArrayQ::from($array)
        ->select('id', 'name')
        ->get();

} catch (\Exception $e) {
    $result = $e->getMessage();
}

pr($result);

查询、排序和获取结果

你可以在你的数组上执行查询

$result = ArrayQ::from($array)
        ->select('id', 'name')
        //->select(['id', 'name'])
        ->where('id', 2)
        //->where('id', '>' ,2)
        ->orWhere('id', 3)
        //->orWhere('id', '>=', 3)
        ->whereDate('dob', '2010-10-10')
        //->whereDate('dob', '>=','2010-10-10')
        ->whereLike('name', 'ruhul')
        //->whereLike('name', 'ruhul', 'start')
        //->whereLike('name', 'ruhul', 'end')
        ->whereIn('age', [22,23,25,26])
        ->whereNotIn('age', [11,12,13])
        
        ->orderBy('id')
        //->orderBy('id', 'desc')
        //->orderBy('id', 'asc')
        //->latest('id')  // Default Id
        //->oldest('id')  // Default Id
        ->get();

更多示例

// To Get All Result
$result = ArrayQ::from($array)->all();

// To Get All Sorted Result
$result = ArrayQ::from($array)->orderBy('id', 'desc')->all();

// To Get Specific Row
$result = ArrayQ::from($array)->where('id', 1)->row();

// To Get First Result
$result = ArrayQ::from($array)->where('id', 1)->first();

// To Get Last Result
$result = ArrayQ::from($array)->where('id', 1)->last();

// To Get nth row
$result = ArrayQ::from($array)->getNth(2); // [0-n]

// Check Is row exist
$result = ArrayQ::from($array)->where('id', 1)->hasData(); // boolean
$result = ArrayQ::from($array)->where('id', 1)->doesExist(); // boolean

// To Get All Sorted Result
$result = ArrayQ::from($array)->orderBy('id', 'desc')->all();

可用的 WHERE 操作符

  • =(默认操作符,可以省略)
  • >
  • <
  • <=
  • >=
  • !=

可用的排序操作符

  • ASC
  • DESC(默认操作符,可以省略)
  • asc
  • desc

限制和偏移量

你可以添加条件并指定查询结果的限制和偏移量

$result = ArrayQ::from($array)
        ->select('*')
        ->orderBy('id')
        ->limit(10)
        //->limit(10, 2)    
        ->get();

聚合查询

你可以添加条件并指定查询结果的限制和偏移量

// To Get Count
$result = ArrayQ::from($array)->count();

// To Get Sum
$result = ArrayQ::from($array)->sum('age');

// To Get Average
$result = ArrayQ::from($array)->avg('age');

// To Get row with minimum column value
$result = ArrayQ::from($array)->min('age');

// To Get row with maximum column value
$result = ArrayQ::from($array)->max('age');

支持

如果你发现了一个问题或有任何想法,请参考此部分

作者