sunaoka / laravel-postgres-extension
Extended PostgreSQL driver for Laravel.
v3.1.0
2024-09-04 09:28 UTC
Requires
- php: ^8.1
- ext-json: *
- illuminate/database: ^8.67 || ^9.0 || ^10.0 || ^11.0
- sunaoka/laravel-postgres-range: ^2.0.0
Requires (Dev)
- larastan/larastan: ^1.0 || ^2.0
- laravel/pint: ^1.17.3
- orchestra/testbench: ^6.19 || ^7.0 || ^8.0 || ^9.0
- phpstan/phpstan-mockery: ^1.1
README
Installation
composer require sunaoka/laravel-postgres-extension
Configurations
php artisan vendor:publish --tag=postgres-extension
Features
-
RETURNING
- UPDATE
- DELETE
-
Caching "information_schema" table.
-
Range Types
- Depends on sunaoka/laravel-postgres-range
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'