Skip to content

dev-lnk/moonshine-builder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

227 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

logo

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² с использованиСм схСм для MoonShine.

Latest Stable Version Total Downloads tests License
Laravel required PHP required MoonShine required


ОписаниС

Π­Ρ‚ΠΎΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Resource, Model ΠΈ Migration со всСми полями, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ·:

ΠŸΠ°ΠΊΠ΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹:

Установка

composer require dev-lnk/moonshine-builder --dev

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°:

php artisan vendor:publish --tag=moonshine-builder

Π’ Ρ„Π°ΠΉΠ»Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΏΡƒΡ‚ΡŒ ΠΊ вашим JSON-схСмам:

return [
    // Directory where schematic files in json, yaml, etc. are stored.
    'builds_dir' => base_path('builds'),

    // Base path for models directory.
    'base_model_path' => 'app/Models',

    // Notification of duplicate files of models and resources with a new generation.
    'is_confirm_replace_files' => true,

    // Ask about adding a new resource to the provider.
    'is_confirm_change_provider' => false,

    // Ask about adding a new resource to the menu.
    'is_confirm_change_menu' => false,
];

Быстрый старт

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

php artisan moonshine:build

Π’Π°ΠΌ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ‹ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π²Ρ‹Π±ΠΎΡ€Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

 β”Œ Type ────────────────────────────────────────────────────────┐
 β”‚   β—‹ table                                                    β”‚
 β”‚ β€Ί ● json                                                     β”‚
 β”‚   β—‹ console                                                  β”‚
 β”‚   β—‹ model                                                    β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

ΠŸΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° json:

 β”Œ File ────────────────────────────────────────────────────────┐
 β”‚ β€Ί ● category.json                                            β”‚
 β”‚   β—‹ project.json                                             β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
app/Models/Category.php was created successfully!
app/MoonShine/Resources/CategoryResource.php was created successfully!
database/migrations/2024_05_27_140239_create_categories.php was created successfully!

INFO  All done.

Команда ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ сигнатуру moonshine:build {target?} {--type=}, Π³Π΄Π΅:

  • target - ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° гСнСрация,
  • type - Ρ‚ΠΈΠΏ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ, доступно table, json, console, model.

Π’Π°ΠΊΠΆΠ΅ доступны ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ:

  • php artisan moonshine:build-json {target?} - гСнСрация ΠΈΠ· JSON-схСмы
  • php artisan moonshine:build-table {target?} - гСнСрация ΠΈΠ· SQL-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹
  • php artisan moonshine:build-resource {entity?} {fields?*} - гСнСрация ΠΈΠ· консоли
  • php artisan moonshine:build-model {entity?} {--all} - гСнСрация ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ· SQL-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ рСсурс, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ схСму Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Для этого Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ php artisan moonshine:build ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ table:

 β”Œ Type ────────────────────────────────────────────────────────┐
 β”‚ β€Ί ● table                                                    β”‚
 β”‚   β—‹ json                                                     β”‚
 β”‚   β—‹ console                                                  β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ:

 β”Œ Table ───────────────────────────────────────────────────────┐
 β”‚   β—‹ password_reset_tokens                                  β”‚ β”‚
 β”‚   β—‹ sessions                                               β”‚ β”‚
 β”‚   β—‹ statuses                                               β”‚ β”‚
 β”‚   β—‹ tasks                                                  β”‚ β”‚
 β”‚ β€Ί ● users                                                  ┃ β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сразу ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ Ρ‚ΠΈΠΏ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

php artisan moonshine:build users --type=table

Или ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

php artisan moonshine:build-table users

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

/**
 * @return list<ComponentContract|FieldContract>
 */
protected function fields(): iterable
{
    return [
        ID::make('id'),
        Text::make('name', 'name'),
        Text::make('email', 'email'),
        Date::make('email_verified_at', 'email_verified_at'),
        Text::make('password', 'password'),
        Text::make('remember_token', 'remember_token'),
    ];
}

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ· JSON-схСмы

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° JSON. Π’ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ builds_dir создайтС Ρ„Π°ΠΉΠ» схСмы, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, category.json:

{
  "resources": [
    {
      "name": "Category",
      "fields": [
        {
          "column": "id",
          "type": "id",
          "methods": [
            "sortable"
          ]
        },
        {
          "column": "name",
          "type": "string",
          "name": "Name"
        }
      ]
    }
  ]
}

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

php artisan moonshine:build category.json

Или ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

php artisan moonshine:build-json category.json

Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с мноТСствСнными рСсурсами ΠΈ связями ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ здСсь.

Timestamps

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ„Π»Π°Π³ timestamps: true:

{
  "resources": [
    {
      "name": "Category",
      "timestamps": true,
      "fields": []
    }
  ]
}

Поля created_at ΠΈ updated_at Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π² сгСнСрированный ΠΊΠΎΠ΄. Если Π²Ρ‹ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚Π΅ поля created_at ΠΈ updated_at Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Ρ„Π»Π°Π³ timestamps автоматичСски установится Π² true.

Soft delete

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Ρ„Π»Π°Π³Ρƒ timestamps ΠΈ полю deleted_at.

Π€Π»Π°Π³ΠΈ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„Π»Π°Π³ΠΎΠ² withResource, withModel, withMigration Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ трСбуСтся ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ для вашСго рСсурса:

{
  "name": "ItemPropertyPivot",
  "withResource": false,
  "withModel": false
}

ГСнСрация ΠΈΠ· консоли

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ php artisan moonshine:build ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ console, Π»ΠΈΠ±ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ moonshine:build-resource. Π”Π°Π»Π΅Π΅ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ имя рСсурса ΠΈ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ всС поля:

 β”Œ Type ────────────────────────────────────────────────────────┐
 β”‚ console                                                      β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

 β”Œ Resource name: ──────────────────────────────────────────────┐
 β”‚ Status                                                       β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

 β”Œ Column: ─────────────────────────────────────────────────────┐
 β”‚ id                                                           β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

 β”Œ Column name: ────────────────────────────────────────────────┐
 β”‚ Id                                                           β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

 β”Œ Column type: ────────────────────────────────────────────────┐
 β”‚ id                                                           β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

 β”Œ Add more fields? ────────────────────────────────────────────┐
 β”‚ ● Yes / β—‹ No                                                 β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сразу ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ рСсурс с полями, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

php artisan moonshine:build-resource Status id:Id:id name:Name:string

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

/**
 * @return list<ComponentContract|FieldContract>
 */
protected function fields(): iterable
{
    return [
        ID::make('id'),
        Text::make('Name', 'name'),
    ];
}

Π‘ΠΈΠ³Π½Π°Ρ‚ΡƒΡ€Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ moonshine:build-resource {entity?} {fields?*}, Π³Π΄Π΅:

  • entity - Π½Π°Π·Π²Π°Π½ΠΈΠ΅ рСсурса,
  • fields - поля для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π²ΠΈΠ΄Π° name:Name:string ΠΈΠ»ΠΈ {column}:{columnName}:{type}

ВсС доступныС {type} ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ php artisan moonshine:build-types

ГСнСрация ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ

Если Ρƒ вас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ готовая модСль Laravel с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌΠΈ полями, связями ΠΈ настройками, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ MoonShine Resource Π½Π° основС этой ΠΌΠΎΠ΄Π΅Π»ΠΈ. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ php artisan moonshine:build ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ model:

 β”Œ Type ────────────────────────────────────────────────────────┐
 β”‚   β—‹ table                                                    β”‚
 β”‚   β—‹ json                                                     β”‚
 β”‚   β—‹ console                                                  β”‚
 β”‚ β€Ί ● model                                                    β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π½ΡƒΠΆΠ½ΡƒΡŽ модСль ΠΈΠ· списка доступных:

 β”Œ Select models (use Space to select, Enter to confirm): ──────┐
 β”‚   β—» app/Models/Category.php                                β”‚ β”‚
 β”‚   β—» app/Models/Comment.php                                 β”‚ β”‚
 β”‚   β—» app/Models/Product.php                                 β”‚ β”‚
 β”‚   β—» app/Models/Rating.php                                  β”‚ β”‚
 β”‚   β—» app/Models/Review.php                                  β”‚ β”‚
 β”‚   β—» app/Models/Tag.php                                     β”‚ β”‚
 └────────────────────────────────────────────────── 0 selected β”˜

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ сразу ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ модСль для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ:

php artisan moonshine:build-model Product

ΠΈΠ»ΠΈ с ΠΏΠΎΠ»Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ класса:

php artisan moonshine:build-model "App\Models\Product"

ГСнСрация рСсурсов для всСх ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ

Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ рСсурсы для всСх ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„Π»Π°Π³ --all:

php artisan moonshine:build-model --all

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° автоматичСски просканируСт Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ с модСлями ΠΈ создаст рСсурсы для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ.

ΠŸΠ°ΠΊΠ΅Ρ‚ автоматичСски ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ модСль ΠΈ создаст:

  • Resource с полями Π½Π° основС структуры Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹
  • Бвязи (HasMany, BelongsTo, BelongsToMany, HasOne) Π½Π° основС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΌΠΎΠ΄Π΅Π»ΠΈ
  • ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΏΠΎΠ»Π΅ΠΉ Π½Π° основС Ρ‚ΠΈΠΏΠΎΠ² ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…
  • Настройки timestamps ΠΈ soft deletes, Ссли ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ

Настройка Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΈΡ‰Π΅Ρ‚ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ app/Models. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ это Π² Ρ„Π°ΠΉΠ»Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ:

'base_model_path' => 'app/Models',

ΠœΠ°ΡΡΠΎΠ²Ρ‹ΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†

Если Ρƒ вас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с собствСнной Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ рСсурсы ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

php artisan moonshine:project-schema

Π‘Π½Π°Ρ‡Π°Π»Π° Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ всС ваши pivot-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ формирования связи BelongsToMany, Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ рСсурсы:

 β”Œ Select the pivot table to correctly generate BelongsToMany (Press enter to skip) ┐
 β”‚ item_property                                                                    β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

 β”Œ Select tables ───────────────────────────────────────────────┐
 β”‚ categories                                                   β”‚
 β”‚ comments                                                     β”‚
 β”‚ items                                                        β”‚
 β”‚ products                                                     β”‚
 β”‚ properties                                                   β”‚
 β”‚ users                                                        β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Π‘ΡƒΠ΄Π΅Ρ‚ создана JSON-схСма, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ:

project_20240613113014.json was created successfully! To generate resources, run: 
php artisan moonshine:build project_20240613113014.json

ИспользованиС Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…

  • MoonVibe - Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π°Π΄ΠΌΠΈΠ½-ΠΏΠ°Π½Π΅Π»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ИИ

About

Creating projects using schemas for the MoonShine.

Resources

License

Stars

Watchers

Forks

Contributors

Languages