sunaoka/laravel-postgres-range
Composer 安装命令:
composer require sunaoka/laravel-postgres-range
包简介
PostgreSQL Range Types for Laravel.
关键字:
README 文档
README
Installation
composer require sunaoka/laravel-postgres-range
Features
- Range Types
- int4range — Range of integer
- int8range — Range of bigint
- numrange — Range of numeric
- tsrange — Range of timestamp without time zone
- tstzrange — Range of timestamp with time zone
- daterange — Range of date
Usage
Table
CREATE TABLE tests ( id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, ts_range tsrange, ts_tz_range tstzrange, date_range daterange, int4_range int4range, int8_range int8range, num_range numrange, created_at timestamp, updated_at timestamp );
Model
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Sunaoka\LaravelPostgres\Eloquent\Casts\DateRangeCast; use Sunaoka\LaravelPostgres\Eloquent\Casts\Int4RangeCast; use Sunaoka\LaravelPostgres\Eloquent\Casts\Int8RangeCast; use Sunaoka\LaravelPostgres\Eloquent\Casts\NumRangeCast; use Sunaoka\LaravelPostgres\Eloquent\Casts\TsRangeCast; use Sunaoka\LaravelPostgres\Eloquent\Casts\TsTzRangeCast; class TestModel extends Model { protected $casts = [ 'ts_range' => TsRangeCast::class, 'ts_tz_range' => TsTzRangeCast::class, 'date_range' => DateRangeCast::class, 'int4_range' => Int4RangeCast::class, 'int8_range' => Int8RangeCast::class, 'num_range' => NumRangeCast::class, ]; }
Range Types
use App\Models\TestModel; use Sunaoka\LaravelPostgres\Types\Bounds\Lower; use Sunaoka\LaravelPostgres\Types\Bounds\Upper; use Sunaoka\LaravelPostgres\Types\DateRange; use Sunaoka\LaravelPostgres\Types\Int4Range; use Sunaoka\LaravelPostgres\Types\Int8Range; use Sunaoka\LaravelPostgres\Types\NumRange; use Sunaoka\LaravelPostgres\Types\TsRange; use Sunaoka\LaravelPostgres\Types\TsTzRange; $model = new TestModel(); $model->ts_range = new TsRange('2020-10-01 00:00:00', '2020-10-01 23:59:59', Lower::Inclusive, Upper::Exclusive); $model->ts_tz_range = new TsTzRange('2020-10-01 00:00:00+00:00', '2020-10-01 23:59:59+00:00', Lower::Inclusive, Upper::Exclusive); $model->date_range = new DateRange('2020-10-01', '2020-10-02', Lower::Inclusive, Upper::Exclusive); $model->int4_range = new Int4Range(1, 3, Lower::Inclusive, Upper::Exclusive); $model->int8_range = new Int8Range(1000, 3000, Lower::Inclusive, Upper::Exclusive); $model->num_range = new NumRange(0.1, 0.3, Lower::Inclusive, Upper::Exclusive); $model->save();
insert into "tests" ( "ts_range", "ts_tz_range", "date_range", "int4_range", "int8_range", "num_range" ) values ( '["2020-10-01 00:00:00","2020-10-01 23:59:59")', '["2020-10-01 00:00:00+00:00","2020-10-01 23:59:59+00:00")', '[2020-10-01,2020-10-02)', '[1,3)', '[1000,3000)', '[0.1,0.3)' ) returning "id"
$model = TestModel::find(1); echo $model->ts_range->lower()->format('Y-m-d H:i:s'); // lower() or from() // => 2020-10-01 00:00:00 echo $model->ts_range->upper()->format('Y-m-d H:i:s'); // lower() or from() // => 2020-10-01 23:59:59 echo $model->ts_tz_range->lower()->format('Y-m-d H:i:sP'); // lower() or from() // => 2020-10-01 00:00:00+00:00 echo $model->ts_tz_range->upper()->format('Y-m-d H:i:sP'); // lower() or from() // => 2020-10-01 23:59:59+00:00 echo $model->date_range->lower()->format('Y-m-d'); // lower() or from() // => 2020-10-01 echo $model->date_range->upper()->format('Y-m-d'); // lower() or from() // => 2020-10-02 echo $model->int4_range->lower(); // lower() or from() // => 1 echo $model->int4_range->upper(); // lower() or from() // => 3 echo $model->int8_range->lower(); // lower() or from() // => 1000 echo $model->int8_range->upper(); // lower() or from() // => 3000 echo $model->num_range->lower(); // lower() or from() // => 0.1 echo $model->num_range->upper(); // lower() or from() // => 0.3
sunaoka/laravel-postgres-range 适用场景与选型建议
sunaoka/laravel-postgres-range 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 12.14k 次下载、GitHub Stars 达 3, 最近一次更新时间为 2024 年 04 月 22 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「postgresql」 「type」 「laravel」 「range」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 sunaoka/laravel-postgres-range 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 sunaoka/laravel-postgres-range 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 sunaoka/laravel-postgres-range 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
SilverStripe now has tentative support for PostgreSQL ('Postgres')
A bundle providing fields for image upload with jquery upload and image cropping with jcrop for symfony2
Dibi is Database Abstraction Library for PHP
A simple Symfony bundle that adds boolean form field type.
A PHP Abstract Enum Class
This package provides type-safe extension of the laravel collection, forcing a single type of object.
统计信息
- 总下载量: 12.14k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 4
- 点击次数: 23
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2024-04-22