So ändern Sie das Modell, um von der Filamentressource in die Exporterklasse zu exportierenPhp

PHP-Programmierer chatten hier
Anonymous
 So ändern Sie das Modell, um von der Filamentressource in die Exporterklasse zu exportieren

Post by Anonymous »

Ich habe eine Anwendung, die Filament 3.2 verwendet, und in dieser Anwendung habe ich eine Ressource namens „Students“. Innerhalb dieser Ressource rufe ich eine „Tables\Actions\ExportBulkAction“ auf, die einen benutzerdefinierten Exporter aufruft.
Das Problem ist, dass meine Ressource aus dem „Students“-Modell stammt und ich eine Entität namens „Courses“ exportieren muss, die eine andere Tabelle ist und eine Eins-zu-viele-Beziehung zu Studenten hat, also einen Kurs kann viele Studenten haben und ein Student kann nur einem Kurs angehören.

Code: Select all

                Tables\Actions\ExportBulkAction::make('export_courses')
->label('Courses export')
->icon('heroicon-o-document-arrow-down')
->color('success')
->modifyQueryUsing(function (Builder $query)
{
$initalQuery = $query->pluck('id')->toArray();
$newQuery = Courses::query()
->whereIn('student_id', $initalQuery)
->with(['student', 'user']);
return $newQuery;
})
->exporter(CoursesExporter::class),
Aber standardmäßig verwendet der Exporter das „Students“-Modell, das aus der Ressource stammt, und wenn ich versuche, es im Exporter zu ändern, funktioniert es nicht:

Code: Select all

protected static ?string $model = Courses::class;
Ich habe auch versucht, die Abfrage im Exporter mit der Methode „modifyQuery“ zu ändern, aber es funktioniert auch nicht, es wird eine Fehlermeldung angezeigt, wenn ich versuche zu exportieren:

Code: Select all

    public static function modifyQuery(Builder $query): Builder
{
$initalQuery = $query->pluck('id')->toArray();
$newQuery = Courses::query()
->whereIn('student_id', $initalQuery)
->with(['student', 'user']);
return $newQuery;
}
Gibt es eine Möglichkeit, dies nativ mit Filament zu tun? Oder gibt es vielleicht eine Möglichkeit, dies mit einer benutzerdefinierten Aktion oder so zu tun?
Ich danke denen, die es wissen und antworten können!!
Ich verwende Filament 3.2, PHP 8.2 und Laravel 11.45.0

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post