
Gestire le relazioni in FilamentPHP
By
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.