sunaoka/laravel-postgres-extension

Extended PostgreSQL driver for Laravel.

v2.0.1 2024-04-24 06:19 UTC

README

Latest Stable Version License PHP from Packagist Laravel Test codecov

Installation

composer require sunaoka/laravel-postgres-extension

Configurations

php artisan vendor:publish --tag=postgres-extension

Features

Usage

Table

CREATE TABLE some_models
(
    id bigserial PRIMARY KEY NOT NULL,
    code text NOT NULL,
    term tsrange NOT NULL,
    CONSTRAINT code_uq UNIQUE (code)
);

Model

<?php

namespace App\Models;

class SomeModel extends \Sunaoka\LaravelPostgres\Eloquent\Model
{
    protected $casts = [
        'term' => \Sunaoka\LaravelPostgres\Eloquent\Casts\TsRangeCast::class, // tsrange
    ];
}

RETURNING

$some = SomeModel::whereId(1)
    ->returning(['*'])
    ->update([
        'term' => new TsRange('2020-09-01 00:00:00', '2020-09-01 23:59:59'),
    ]);

echo get_class($some);
// => Illuminate\Database\Eloquent\Collection

echo get_class($some->first());
// => App\Models\SomeModel
update "some_models" 
set "term" = '[2020-09-01 00:00:00,2020-09-01 23:59:59)' 
where "id" = '1' 
returning *

Caching "information_schema" table.

Permanently cache the results for a table like the one below.

select * 
from information_schema.tables 
where table_schema = 'public' and table_name = 'some_models'

Range Types

see: sunaoka/laravel-postgres-range