PHPackages                             azzoelabbar/laravel-toon-export - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. azzoelabbar/laravel-toon-export

ActiveLibrary[Database &amp; ORM](/categories/database)

azzoelabbar/laravel-toon-export
===============================

TOON exporters for Laravel (collections, models, queries).

v0.2.0(5mo ago)03MITPHPPHP ^8.1

Since Nov 15Pushed 5mo agoCompare

[ Source](https://github.com/azzoelabbar/laravel-toon-export)[ Packagist](https://packagist.org/packages/azzoelabbar/laravel-toon-export)[ RSS](/packages/azzoelabbar-laravel-toon-export/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (2)Versions (2)Used By (0)

Laravel TOON Export
===================

[](#laravel-toon-export)

[![Latest Version](https://camo.githubusercontent.com/b6f8e2d620cdc31faaf717c593a6212b1ed5432bd80851f3d777c426447f6dc6/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f617a7a6f656c61626261722f6c61726176656c2d746f6f6e2d6578706f72742e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/azzoelabbar/laravel-toon-export)[![Total Downloads](https://camo.githubusercontent.com/3ae0614e18cfe2b52ebc09fbdd233cb5d836cfa3e62af98a7a21b0930971355b/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f617a7a6f656c61626261722f6c61726176656c2d746f6f6e2d6578706f72742e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/azzoelabbar/laravel-toon-export)[![License](https://camo.githubusercontent.com/6395b52e41a104624fba940adfedc4db2210c8dc0d398e719b2ef1805c08c9bc/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f617a7a6f656c61626261722f6c61726176656c2d746f6f6e2d6578706f72742e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/azzoelabbar/laravel-toon-export)

A Laravel package that exports data (Eloquent models, queries, collections) into **TOON format** – optimized for LLM/token usage.

Think of it as: **`Export::toJSON` / `toCSV` → now also `toTOON`**

🎯 Why TOON?
-----------

[](#-why-toon)

TOON format is a compact, structured data format perfect for AI/LLM pipelines. It uses significantly fewer tokens than JSON while maintaining structure.

**JSON (bloated):**

```
[
  { "id": 1, "name": "Panadol", "price": 3.5 },
  { "id": 2, "name": "Nizoral", "price": 18.9 }
]
```

**TOON (compact):**

```
products[2]{id,name,price}:
1,Panadol,3.5
2,Nizoral,18.9

```

**Result:** ~70% fewer tokens, same information! 🚀

📦 Installation
--------------

[](#-installation)

Install via Composer:

```
composer require azzoelabbar/laravel-toon-export
```

The package will auto-discover and register itself. No configuration needed!

🚀 Quick Start
-------------

[](#-quick-start)

```
use Egate\ToonExport\Facades\ToonExport;
use App\Models\User;

// Export from collection
$users = User::select('id', 'name', 'email')->get();
$toon = ToonExport::fromCollection($users, 'users', ['id', 'name', 'email']);

// Export from query
$toon = ToonExport::fromQuery(
    User::query()->where('active', true),
    'active_users',
    ['id', 'name', 'email']
);

// Output:
// users[3]{id,name,email}:
// 1,Azzo,azzo@example.com
// 2,Ali,ali@example.com
// 3,Salah,salah@elabbar.com
```

📖 Usage
-------

[](#-usage)

### Export from Collection

[](#export-from-collection)

```
use Egate\ToonExport\Facades\ToonExport;

$products = Product::all();
$toon = ToonExport::fromCollection($products, 'products', ['id', 'name', 'price']);
```

### Export from Query Builder

[](#export-from-query-builder)

```
$toon = ToonExport::fromQuery(
    Order::query()
        ->where('status', 'completed')
        ->where('created_at', '>=', now()->subMonth()),
    'recent_orders',
    ['id', 'user_id', 'total', 'created_at']
);
```

### HTTP Download Response

[](#http-download-response)

```
Route::get('/export/users.toon', function () {
    $users = User::select('id', 'name', 'email')->get();
    $toon = ToonExport::fromCollection($users, 'users', ['id', 'name', 'email']);

    return response($toon, 200, [
        'Content-Type' => 'text/plain; charset=utf-8',
        'Content-Disposition' => 'attachment; filename="users.toon"',
    ]);
});
```

### Artisan Command

[](#artisan-command)

Export models directly from the command line:

```
# Basic export
php artisan toon:export "App\Models\User" --columns=id,name,email

# Custom name and path
php artisan toon:export "App\Models\Product" \
  --name=products \
  --columns=id,name,price \
  --path=exports
```

**Command Options:**

- `model` (required): Fully qualified model class, e.g. `App\Models\User`
- `--name`: Root TOON name (defaults to snake\_case of model name)
- `--columns`: Comma-separated list of columns to export
- `--path`: Subdirectory under `storage/app` (default: `toon`)

**Examples:**

```
# Export with default name
php artisan toon:export "App\Models\Product"
# Creates: storage/app/toon/product.toon

# Export with custom name and columns
php artisan toon:export "App\Models\User" \
  --name=active_users \
  --columns=id,name,email,role

# Export to custom directory
php artisan toon:export "App\Models\Order" \
  --name=recent_orders \
  --path=exports/toon
# Creates: storage/app/exports/toon/recent_orders.toon
```

🔧 Advanced Usage
----------------

[](#-advanced-usage)

### Multiple Tables

[](#multiple-tables)

```
$users = ToonExport::fromCollection($users, 'users', ['id', 'name']);
$orders = ToonExport::fromCollection($orders, 'orders', ['id', 'user_id', 'total']);

$combined = $users . "\n\n" . $orders;
```

### Custom Data Arrays

[](#custom-data-arrays)

```
$data = [
    ['id' => 1, 'name' => 'Item 1', 'price' => 10.5],
    ['id' => 2, 'name' => 'Item 2', 'price' => 20.0],
];

$toon = ToonExport::fromCollection(
    collect($data),
    'items',
    ['id', 'name', 'price']
);
```

### AI/LLM Integration

[](#aillm-integration)

```
use Egate\ToonExport\Facades\ToonExport;

// Export data for LLM processing
$users = User::where('city', 'Benghazi')->get();
$toon = ToonExport::fromCollection($users, 'users', ['id', 'name', 'email', 'city']);

// Send to OpenAI/Anthropic
$prompt = "Analyze this user data:\n\n{$toon}\n\nWhat patterns do you see?";
// ... send to LLM API
```

📋 TOON Format Specification
---------------------------

[](#-toon-format-specification)

The TOON format follows this structure:

```
table_name[record_count]{column1,column2,column3}:
value1,value2,value3
value1,value2,value3
...

```

**Rules:**

- Header: `name[count]{columns}:`
- Data rows: comma-separated values, one per line
- Values with commas/newlines are automatically quoted
- Empty values are represented as empty strings

**Example:**

```
products[3]{id,name,price,stock}:
1,Panadol,3.5,100
2,Nizoral,18.9,50
3,Aspirin,2.0,

```

✅ Requirements
--------------

[](#-requirements)

- PHP ^8.1
- Laravel ^10.0 || ^11.0 || ^12.0

🎨 Features
----------

[](#-features)

- ✅ Export from Eloquent Collections
- ✅ Export from Query Builders
- ✅ Artisan command for CLI exports
- ✅ Auto-discovery (no manual registration)
- ✅ Token-efficient format for AI/LLM
- ✅ Works with any Eloquent model
- ✅ Supports custom columns selection
- ✅ Automatic escaping for special characters

🤝 Use Cases
-----------

[](#-use-cases)

- **AI/LLM Pipelines:** Send structured data to OpenAI, Anthropic, etc.
- **Data Exports:** Create compact export files
- **API Responses:** Return token-efficient data formats
- **Admin Dashboards:** Export data for analysis
- **Batch Processing:** Prepare data for AI processing

📝 Examples
----------

[](#-examples)

### Controller Example

[](#controller-example)

```
