limanweb/pg-ext
Composer 安装命令:
composer require limanweb/pg-ext
包简介
Laravel extensions to work with Postgresql table native field-types
关键字:
README 文档
README
Extending the laravel to work with PostgreSQL tables
Provides
- additional casting types for the some native PostgreSQL types
- additional many-to-many relations with using of specific PostgreSQL array-type fields
Anounced (in developing)
- extension of BluePrint to operate PostgreSQL array fields and GIN-indexes
Installation
Run:
composer require "limanweb/pg-ext"
Package contents
- Models\
- Concerns\
- PgTypeCastable - cast some PostgreSQL native types for model
- HasArrayRelationships - additional relations for model
- Model - The abstract model that used PgTypeCastable & HasArrayRelationships traits
- Concerns\
- Relations\
- ArrayRelations - base abstract class for array-field relations
- HasManyInArray - HasManyInArray relation class
- BelongsToManyArrays - BelongsToManyArrays relation class
- Support\
- PgHelper - PostgreSQL native type convertion helper
Using extended casting
Use trait Limanweb\PgExt\Models\Concerns\PgTypeCastable in your model to cast some native PostgreSQL types
- Add trait
Limanweb\PgExt\Models\Concerns\PgTypeCastableinto your model
use Illuminate\Database\Eloquent\Model; class YourModel extends Model { use Limanweb\PgExt\Models\Concerns\PgTypeCastable; // Your model implementation }
or inherite your model from Limanweb\PgExt\Models\Model to use extended casting by default.
use Limanweb\PgExt\Models\Model; class YourModel extends Model { // Your model implementation }
- Describe your table array fields in $casts property with 'pg_array'
protected $casts = [ 'your_array_field' => 'pg_array', ];
Available cast types:
- pg_array - use for one dimension array fields ("text[]", "varchar[]", "int[]" and other)
Now you can operate with array-attributes of model like with PHP-array.
Using extended relations
Add trait Limanweb\PgExt\Models\Concerns\HasArrayRelationships into your model
use Illuminate\Database\Eloquent\Model; class YourModel extends Model { use Limanweb\PgExt\Models\Concerns\PgTypeCastable; use Limanweb\PgExt\Models\Concerns\HasArrayRelationships; // Your model implementation }
or inherite your model from Limanweb\PgExt\Models\Model to use extended casting and relationships by default.
What many-to-many relation trough array-field
For example, you have two tables: posts and tags. Every post can have many tags, and every tag can be associated with many posts. You can add a column 'tag_ids' of native PostgreSQL type 'INTEGER[]' (array of integer) into 'posts' table. Now, you can use this field to specify ID-s of tags associated with post.
Notes: Don't forget to create GIN-index on 'tag_ids' field.
Using the hasManyInArray and the belongsToManyArrays relationships allows you to access related models. See examples below.
hasManyInArray relation
use Limanweb\PgExt\Models\Model; class Post extends Model { protected $casts = [ 'name' => 'string', 'tag_ids' => 'pg_array', // this is array of integer PostgreSQL field // in SQL is "country_is INTEGER[]," ]; // Your model implementation /** * @return Limanweb\PgExt\Relations\HasManyInArray */ public function tags() { return $this->hasManyInArray(Tag::class, 'tag_ids', 'id'); } }
belongsToManyArrays relation
use Limanweb\PgExt\Models\Model; class Tag extends Model { protected $casts = [ 'name' => 'string', ]; // Your model implementation /** * @return Limanweb\PgExt\Relations\BelongsToManyArrays */ public function posts() { return $this->belongsToManyArrays(Post::class, 'tag_ids', 'id'); } }
limanweb/pg-ext 适用场景与选型建议
limanweb/pg-ext 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 6.6k 次下载、GitHub Stars 达 2, 最近一次更新时间为 2018 年 12 月 17 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「postgresql」 「laravel」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 limanweb/pg-ext 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 limanweb/pg-ext 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 limanweb/pg-ext 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
SilverStripe now has tentative support for PostgreSQL ('Postgres')
Dibi is Database Abstraction Library for PHP
Sql dumps containing databases for the linna apps.
Manage PostgreSQL schemas in Laravel applications
VV database abstraction layer with query builder and DB structure models
Alfabank REST API integration
统计信息
- 总下载量: 6.6k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2
- 点击次数: 23
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-12-17