Skip to content
Gestire le relazioni in FilamentPHP

Gestire le relazioni in FilamentPHP

By Pier Luigi Papeschi

Se abbiamo dei model Eloquent che hanno relazioni uno-a-molti o molti-a-molti, possiamo sfruttare un potente sistema di gestione delle relazioni offerto da Filament per visualizzare e poter accedere alle risorse collegate a partire dalla risorsa primaria. Vediamo nel concreto cosa significa e come si fa.

I model

Mettiamo di avere il model Post che ha come risorsa Filament “Posts”, poi abbiamo il model Category con risorsa “Categories” e la relazione di Post su Category è di tipo uno a molti.

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use App\Models\Category;

class Post extends Model
{
    protected $fillable = [
        'slug',
        'title',
        'content',
    ];

    public function categories()
    {
        return $this->belongsToMany(Category::class)->using(PostCategory::class);
    }
}

La classe pivot PostCategory viene usata per contenere le categorie assegnate al post.

Relazione Filament

Per creare la relazione eseguiamo:

php artisan make:filament-relation-manager PostResource categories

Poi aggiungiamo nel file principale della risorsa Filament dei Post (PostResource.php), nel metodo dedicato alle relazioni (getRelations) la relazione appena creata:

RelationManagers\CategoriesRelationManager::class,

Una volta fatto questo vedremo nel form di un Post (nuovo o in modalità edit) il tab relativo alla relazione.