FilamentF
Filament11mo ago
Arjan

Problem: Exporter Not Working with Eager-Loaded Relationships

I’m trying to use a TitleExporter to export data from my Title model. Here’s the code for my exporter:

<?php

namespace App\Filament\Exports;

use App\Models\Title;
use Carbon\CarbonInterface;
use Filament\Actions\Exports\ExportColumn;
use Filament\Actions\Exports\Exporter;
use Filament\Actions\Exports\Models\Export;

class TitleExporter extends Exporter
{
    protected static ?string $model = Title::class;

    public static function getColumns(): array
    {
        return [
            ExportColumn::make('id')->label('Id'),
            ExportColumn::make('name')->label('Name'),
            ExportColumn::make('created_at')->label('Created at'),
            ExportColumn::make('updated_at')->label('Updated at'),
        ];
    }
}


The Title model is configured to eagerly load some relationships using the protected $with property:

protected $with = ['metadata', 'metadata.parent', 'metadata.parent.metadata'];


In the table, everything works perfectly: the metadata relationships are fetched and displayed without issues.

However, when I try to export, I get the following error:

Call to undefined relationship [metadata] on model [App\Models\Metadata].

It seems like the exporter isn’t able to handle the relationships defined in the $with property. Does anyone know why this might be happening or how I can fix it? Any advice is much appreciated! Thanks!
Was this page helpful?