Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
export
jaguarjack/catchadmin
claude-code
framework
modules
management
permissions
catchadmin

Generate Excel export class for CatchAdmin module.

Install
php artisan boost:add-skill jaguarjack/catchadmin

Save this content to: .claude/skills/07-export/SKILL.md

# Step 7: Generate Export Class

创建数据导出类。

## File Location

```
modules/{Module}/Export/{Model}.php
```

## Template

```php
<?php

namespace Modules\{Module}\Export;

use Catch\Support\Excel\Export;

class {Model} extends Export
{
    protected array $header = [
        'ID', 'Name', 'Created At'
    ];

    public function array(): array
    {
        return \Modules\{Module}\Models\{Model}::query()
            ->select('id', 'name', 'created_at')
            ->get()
            ->toArray();
    }
}
```

## Header Mapping

| Field | Header |
|-------|--------|
| id | ID |
| name | Name |
| email | Email |
| status | Status |
| created_at | Created At |

## With Relationships

```php
public function array(): array
{
    return {Model}::query()
        ->with('category')
        ->get()
        ->map(fn ($item) => [
            $item->id,
            $item->name,
            $item->category?->name ?? '-',
            $item->created_at,
        ])
        ->toArray();
}
```

## Controller Usage

```php
public function export(): mixed
{
    return {Model}::query()
        ->select('id', 'name', 'created_at')
        ->get()
        ->download(['ID', 'Name', 'Created At']);
}
```

Step 7: Generate Export Class

创建数据导出类。

File Location

modules/{Module}/Export/{Model}.php

Template

<?php

namespace Modules\{Module}\Export;

use Catch\Support\Excel\Export;

class {Model} extends Export
{
    protected array $header = [
        'ID', 'Name', 'Created At'
    ];

    public function array(): array
    {
        return \Modules\{Module}\Models\{Model}::query()
            ->select('id', 'name', 'created_at')
            ->get()
            ->toArray();
    }
}

Header Mapping

Field Header
id ID
name Name
email Email
status Status
created_at Created At

With Relationships

public function array(): array
{
    return {Model}::query()
        ->with('category')
        ->get()
        ->map(fn ($item) => [
            $item->id,
            $item->name,
            $item->category?->name ?? '-',
            $item->created_at,
        ])
        ->toArray();
}

Controller Usage

public function export(): mixed
{
    return {Model}::query()
        ->select('id', 'name', 'created_at')
        ->get()
        ->download(['ID', 'Name', 'Created At']);
}
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
frankyso/ipaymu
3mdikram/worldmoneywords
snowsoft/config
itmosoft/laravel-subscriptions
larva/laravel-ai-qwen
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox
pairus/product-data
fayne/laravel-filament-cms-core