开始
概述
面板是 Filament 中的顶级容器,它允许你构建功能丰富的管理面板,其中包括页面、资源、表单、表格、通知、Action、信息列表和 Widget。所有面板都有一个默认的仪表盘,其中包含统计、图表、表格等多种 Widget。
前置要求
使用 Filament 之前,你需要先熟悉 Laravel。Filament 是基于许多 Laravel 核心概念构建的,特别是数据库迁移和 Eloquent ORM。如果你此前未曾用过 Laravel,或者需要复习,建议你跟着 Laravel Bootcamp 去创建一个小应用。那个教程涵盖了创建 Laravel 应用的基础知识。
Demo 项目
本教程介绍使用 Filament 为兽医诊所建立一个简单的患者管理系统。它将支持添加新患者(猫、狗或兔子),将他们分配给主人(owners),并记录他们接受的治疗(treatments)。该系统将有一个仪表板,上面有患者类型的统计数据,还有一张显示过去一年治疗次数的图表。
设置数据库和模型
这个项目中需要 3 个模型 - Owner
、Patient
和 Treatment
。使用以下 artisan 命令创建:
php artisan make:model Owner -m
php artisan make:model Patient -m
php artisan make:model Treatment -m
定义迁移
数据库迁移请使用如下 schema:
// create_owners_table
Schema::create('owners', function (Blueprint $table) {
$table->id();
$table->string('email');
$table->string('name');
$table->string('phone');
$table->timestamps();
});
// create_patients_table
Schema::create('patients', function (Blueprint $table) {
$table->id();
$table->date('date_of_birth');
$table->string('name');
$table->foreignId('owner_id')->constrained('owners')->cascadeOnDelete();
$table->string('type');
$table->timestamps();
});
// create_treatments_table
Schema::create('treatments', function (Blueprint $table) {
$table->id();
$table->string('description');
$table->text('notes')->nullable();
$table->foreignId('patient_id')->constrained('patients')->cascadeOnDelete();
$table->unsignedInteger('price')->nullable();
$table->timestamps();
});
使用 php artisan migrate
运行迁移文件。
解除所有模型的防护
为了本教程的简洁,我们将禁用 Laravel 的批量赋值保护。Filament 通过只将有效数据存入到模型中,因此模型可以安全地解除防护。要一次性解除所有模型的防护,只需在 app/Providers/AppServiceProvider.php
的 boot()
方法中添加 Model::unguard()
:
use Illuminate\Database\Eloquent\Model;
public function boot(): void
{
Model::unguard();
}