---
title: "Gestire le relazioni in FilamentPHP"
id: "257"
type: "post"
slug: "gestire-le-relazioni-in-filamentphp"
published_at: "2026-05-07T18:34:44+00:00"
modified_at: "2026-07-24T14:12:45+00:00"
url: "https://pierluigipapeschi.com/gestire-le-relazioni-in-filamentphp/"
markdown_url: "https://pierluigipapeschi.com/gestire-le-relazioni-in-filamentphp.md"
excerpt: "Se abbiamo delle entità che hanno relazioni uno-a-molti o molti-a-molti con un’altra entità, 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..."
taxonomy_category:
  - "FilamentPHP"
  - "Laravel"
---

Se abbiamo delle entità che hanno relazioni uno-a-molti o molti-a-molti con un’altra entità, possiamo sfruttare un potente sistema di gestione delle relazioni offerto da [Filament](https://filamentphp.com/docs/5.x/resources/managing-relationships)
 per visualizzare e poter accedere alle risorse collegate a partire dalla risorsa primaria. Vediamo nel concreto cosa significa e come si fa.

## Le varie entità in gioco

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. Vedi [questo articolo](https://pierluigipapeschi.com/creare-una-risorsa-filament/)
 per approfondire le resources Filament.

```
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);
    }
}
```

Avremo quindi bisogno di una terza entità (e classe) pivot **PostCategory** che viene usata per associare le categorie assegnate ad ogni post. Quindi per ricapitolare avremo 2 entità principali da mettere in relazione tramite una tabella pivot.

## Relazioni in Filament

Per creare la relazione eseguiamo:

```
php artisan make:filament-relation-manager PostResource categories
```

La regola è questa:

- PostResource è il nome della classe della resource primaria, cioè a cui si vuole imputare la seconda entità
- categories è il nome della relazione

Vengono fatte alcune domande come se l’entità fa parte di un cluster (vedi [questo articolo](https://pierluigipapeschi.com/gestire-le-pagine-e-i-cluster-in-filament/)
), se vogliamo collegare questa entità ad una già esistente, ecc.

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

```
public static function getRelations(): array
{
  return [
    RelationManagers\CategoriesRelationManager::class,
  ];
}
```

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