承接 glugox/model-meta 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

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

glugox/model-meta

最新稳定版本:v1.1.6

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.

统计信息

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

GitHub 信息

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

其他信息

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