MoonShine MoonShine
EN
← All plugins

MoonShine builder

Made by the authors of MoonShine
Supports dark mode
Multilingualism

Code generator tool for MoonShine Laravel admin panel. This package streamlines development by generating MoonShine resources, Laravel models, and migrations from JSON schemas, SQL tables, or console commands. Support for relationships, timestamps, soft deletes, and bulk table imports makes it easy to scaffold your admin panel structure.

Rating
Downloads
3125
Version
2.3.5
Last updated
30.06.2025
MoonShine version
v2, v3
Github stars
24

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
composer require dev-lnk/moonshine-builder --dev

ะšะพะฝั„ะธะณัƒั€ะฐั†ะธั

ะžะฟัƒะฑะปะธะบัƒะนั‚ะต ั„ะฐะนะป ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะธ ะฟะฐะบะตั‚ะฐ:

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

ะ’ ั„ะฐะนะปะต ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะธ ัƒะบะฐะถะธั‚ะต ะฟัƒั‚ัŒ ะบ ะฒะฐัˆะธะผ JSON-ัั…ะตะผะฐะผ:

return [
'builds_dir' => base_path('builds')
];
return [
'builds_dir' => base_path('builds')
];

ะ‘ั‹ัั‚ั€ั‹ะน ัั‚ะฐั€ั‚

ะ’ั‹ะฟะพะปะฝะธั‚ะต ะบะพะผะฐะฝะดัƒ:

php artisan moonshine:build
php artisan moonshine:build

ะ’ะฐะผ ะฑัƒะดัƒั‚ ะฟั€ะตะดะปะพะถะตะฝั‹ ะฒะฐั€ะธะฐะฝั‚ั‹ ะฒั‹ะฑะพั€ะฐ ะผะตั‚ะพะดะพะฒ ะณะตะฝะตั€ะฐั†ะธะธ ะบะพะดะฐ, ะฝะฐะฟั€ะธะผะตั€:

โ”Œ Type โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ โ—‹ table โ”‚
โ”‚ › โ— json โ”‚
โ”‚ โ—‹ console โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”Œ Type โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ โ—‹ table โ”‚
โ”‚ › โ— json โ”‚
โ”‚ โ—‹ console โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ะŸั€ะธ ะฒั‹ะฑะพั€ะต ะฒะฐั€ะธะฐะฝั‚ะฐ json:

โ”Œ File โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ › โ— category.json โ”‚
โ”‚ โ—‹ project.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!
WARN Don't forget to register new resources in the provider method:
new CategoryResource(),
...or in the menu method:
MenuItem::make(
static fn() => 'CategoryResource',
new CategoryResourceResource()
),
INFO All done.
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!
WARN Don't forget to register new resources in the provider method:
new CategoryResource(),
...or in the menu method:
MenuItem::make(
static fn() => 'CategoryResource',
new CategoryResourceResource()
),
INFO All done.

ะšะพะผะฐะฝะดะฐ ะธะผะตะตั‚ ัะปะตะดัƒัŽั‰ัƒัŽ ัะธะณะฝะฐั‚ัƒั€ัƒ moonshine:build {target?} {--type=}, ะณะดะต:

  • target - ััƒั‰ะฝะพัั‚ัŒ, ะฟะพ ะบะพั‚ะพั€ะพะน ะฑัƒะดะตั‚ ะฒั‹ะฟะพะปะฝะตะฝะฐ ะณะตะฝะตั€ะฐั†ะธั,
  • type - ั‚ะธะฟ ะธะปะธ ะผะตั‚ะพะด ะณะตะฝะตั€ะฐั†ะธะธ, ะดะพัั‚ัƒะฟะฝะพ table, json, console.

ะœะตั‚ะพะดั‹ ะณะตะฝะตั€ะฐั†ะธะธ ะบะพะดะฐ

ะกะพะทะดะฐะฝะธะต ะธะท SQL-ั‚ะฐะฑะปะธั†ั‹

ะ’ั‹ ะผะพะถะตั‚ะต ัะพะทะดะฐั‚ัŒ ั€ะตััƒั€ั, ะธัะฟะพะปัŒะทัƒั ัั…ะตะผัƒ ั‚ะฐะฑะปะธั†ั‹. ะ”ะปั ัั‚ะพะณะพ ะฒั‹ะฟะพะปะฝะธั‚ะต ะบะพะผะฐะฝะดัƒ php artisan moonshine:build ะธ ะฒั‹ะฑะตั€ะธั‚ะต ะฒะฐั€ะธะฐะฝั‚ table:

โ”Œ Type โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ › โ— table โ”‚
โ”‚ โ—‹ json โ”‚
โ”‚ โ—‹ console โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”Œ Type โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ › โ— table โ”‚
โ”‚ โ—‹ json โ”‚
โ”‚ โ—‹ console โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ะ’ั‹ะฑะตั€ะธั‚ะต ะฝะตะพะฑั…ะพะดะธะผัƒัŽ ั‚ะฐะฑะปะธั†ัƒ:

โ”Œ Table โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ โ—‹ password_reset_tokens โ”‚ โ”‚
โ”‚ โ—‹ sessions โ”‚ โ”‚
โ”‚ โ—‹ statuses โ”‚ โ”‚
โ”‚ โ—‹ tasks โ”‚ โ”‚
โ”‚ › โ— users โ”ƒ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”Œ Table โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ โ—‹ password_reset_tokens โ”‚ โ”‚
โ”‚ โ—‹ sessions โ”‚ โ”‚
โ”‚ โ—‹ statuses โ”‚ โ”‚
โ”‚ โ—‹ tasks โ”‚ โ”‚
โ”‚ › โ— users โ”ƒ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ะ’ั‹ ะผะพะถะตั‚ะต ัั€ะฐะทัƒ ัƒะบะฐะทะฐั‚ัŒ ะฝะฐะทะฒะฐะฝะธะต ั‚ะฐะฑะปะธั†ั‹ ะธ ั‚ะธะฟ ะณะตะฝะตั€ะฐั†ะธะธ. ะŸั€ะธะผะตั€:

php artisan moonshine:build users --type=table
php artisan moonshine:build users --type=table

ะ ะตะทัƒะปัŒั‚ะฐั‚:

public function indexFields(): 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'),
];
}
public function formFields(): iterable
{
return [
Box::make([
...$this->indexFields()
])
];
}
public function detailFields(): iterable
{
return [
...$this->indexFields()
];
}
public function indexFields(): 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'),
];
}
public function formFields(): iterable
{
return [
Box::make([
...$this->indexFields()
])
];
}
public function detailFields(): iterable
{
return [
...$this->indexFields()
];
}

ะกะพะทะดะฐะฝะธะต ะธะท JSON-ัั…ะตะผั‹

ะกั‚ั€ัƒะบั‚ัƒั€ะฐ JSON. ะ’ ะดะธั€ะตะบั‚ะพั€ะธะธ builds_dir ัะพะทะดะฐะนั‚ะต ั„ะฐะนะป ัั…ะตะผั‹, ะฝะฐะฟั€ะธะผะตั€, category.json:

{
"resources": [
{
"name": "Category",
"fields": [
{
"column": "id",
"type": "id",
"methods": [
"sortable"
]
},
{
"column": "name",
"type": "string",
"name": "Name"
}
]
}
]
}
{
"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 category.json

ะ‘ะพะปะตะต ะฟะพะดั€ะพะฑะฝั‹ะน ะฟั€ะธะผะตั€ ั ะผะฝะพะถะตัั‚ะฒะตะฝะฝั‹ะผะธ ั€ะตััƒั€ัะฐะผะธ ะธ ัะฒัะทัะผะธ ะผะพะถะฝะพ ะฝะฐะนั‚ะธ ะทะดะตััŒ.

Timestamps

ะ’ั‹ ะผะพะถะตั‚ะต ัƒะบะฐะทะฐั‚ัŒ ั„ะปะฐะณ timestamps: true:

{
"resources": [
{
"name": "Category",
"timestamps": true,
"fields": []
}
]
}
{
"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
}
{
"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 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”Œ 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
php artisan moonshine:build-resource Status id:Id:id name:Name:string

ะ ะตะทัƒะปัŒั‚ะฐั‚:

public function indexFields(): iterable
{
return [
ID::make('id'),
Text::make('Name', 'name'),
];
}
public function indexFields(): 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

ะœะฐััะพะฒั‹ะน ะธะผะฟะพั€ั‚ ั‚ะฐะฑะปะธั†

ะ•ัะปะธ ัƒ ะฒะฐั ัƒะถะต ะตัั‚ัŒ ะฟั€ะพะตะบั‚ ั ัะพะฑัั‚ะฒะตะฝะฝะพะน ะฑะฐะทะพะน ะดะฐะฝะฝั‹ั… ะธ ะฒั‹ ะฝะต ั…ะพั‚ะธั‚ะต ะณะตะฝะตั€ะธั€ะพะฒะฐั‚ัŒ ั€ะตััƒั€ัั‹ ะฟะพ ะพะดะฝะพะผัƒ, ะธัะฟะพะปัŒะทัƒะนั‚ะต ัะปะตะดัƒัŽั‰ัƒัŽ ะบะพะผะฐะฝะดัƒ:

php artisan moonshine:project-schema
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 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”Œ 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
project_20240613113014.json was created successfully! To generate resources, run:
php artisan moonshine:build project_20240613113014.json