/laravel-postgres-extension

Laravel extended PostgreSQL driver for Laravel 8.x to 11.x

Primary LanguagePHPMIT LicenseMIT

Laravel extended PostgreSQL driver for Laravel 8.x to 11

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