glugox/model-meta 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

glugox/model-meta

Composer 安装命令:

composer require glugox/model-meta

包简介

Laravel package for defining model fields, validation, relations, etc.

README 文档

README

PHP Version License

ModelMeta is a PHP package to define metadata for models, including fields, types, validation rules, and relationships.

Features

  • Define model fields with type-safe classes (TextField, EmailField, EnumField, etc.)
  • Fluent API for setting validation rules, nullable, required, default, sortable, unique and more
  • Supports numeric ranges (min, max) and precision (step) for decimal/float fields
  • Explicit enum values support
  • Controls for visibility in forms and tables (showInForm, showInTable)
  • Readonly and hidden field flags
  • Integration-ready for custom admin panels or CRUD generators
  • Ready for automated tests with Pest

Installation

composer require glugox/model-meta

Basic Usage

use Glugox\ModelMeta\Fields\Text;
use Glugox\ModelMeta\Fields\Email;
use Glugox\ModelMeta\Fields\Enum;
use Glugox\ModelMeta\Fields\Decimal;
use Glugox\ModelMeta\FieldType;

class UserMeta
{
    public function fields(): array
    {
        return [
            Text::make('first_name')->required()->sortable(),
            Text::make('last_name')->nullable(),
            Email::make('email')->required(),
            Enum::make('role', ['admin', 'editor', 'user']),
            Decimal::make('balance')->default(0)->step(0.01)->min(0),
        ];
    }
}

Fluent API Example

use Glugox\ModelMeta\Fields\Text;

$field = Text::make('username')
    ->required()
    ->nullable() // automatically adds 'nullable' rule
    ->default('guest')
    ->sortable()
    ->unique('users', 'username');

Field Types

Supported field types include:

  • Basic: ID, String, Text, LongText, MediumText, Char
  • Numbers: Integer, SmallInteger, TinyInteger, BigInteger, Decimal, Float, Double
  • Special: Email, Password, Phone, Username, Slug, URL, UUID, Token, Secret
  • Date/Time: Date, DateTime, Time, Timestamp, Year
  • Boolean / Binary: Boolean, Binary
  • File: File, Image
  • JSON: JSON, JSONB
  • Enumeration: Enum (with values)

Relations

Currently supports:

  • BelongsTo
  • HasOne
  • HasMany
  • BelongsToMany

Define relations via dedicated relation classes when building meta for entities.

Testing

Pest is recommended:

composer require pestphp/pest --dev

Example test:

use Dummies\UserMeta;
use Glugox\ModelMeta\FieldType;

it('defines UserMeta fields', function () {
    $meta = new UserMeta();
    $fields = $meta->fields();

    expect($fields)->toHaveCount(5)
        ->and($fields[0]->type)->toBe(FieldType::STRING)
        ->and($fields[0]->required)->toBeTrue();
});

Contributing

Contributions are welcome! Please open issues or pull requests.

License

MIT License. See LICENSE file for details.

glugox/model-meta 适用场景与选型建议

glugox/model-meta 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 259 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 09 月 14 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 glugox/model-meta 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 glugox/model-meta 我们能提供哪些服务?
定制开发 / 二次开发

基于 glugox/model-meta 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 259
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 19
  • 依赖项目数: 2
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-09-14