FilamentについてLLMに聞くと以下のような回答が返ってきました。なかなか良さそうなので早速試してみます。
Filamentは、Laravel アプリケーションのためのオープンソースの管理パネル作成フレームワークです。簡単に言うと、Filament を使うと、わずか数行のコードで、美しく、機能的な管理パネルを構築できます。
Filamentを使うと以下のようなメリットがあります:
- 迅速な開発: Filament は、事前構築されたコンポーネントとテンプレートを提供することで、開発時間を大幅に短縮します。
- 美しいデザイン: Filament は、洗練された UI と UX を提供し、ユーザーエクスペリエンスを向上させます。
- カスタマイズ性: Filament は、豊富なカスタマイズオプションを提供し、アプリケーションのニーズに合わせて管理パネルを調整できます。
- 強力な機能: Filament は、ユーザー管理、認証、アクセス制御、データテーブル、フォーム、ファイルアップロードなど、管理パネルに不可欠な機能をすべて備えています。
- コミュニティサポート: Filament は、活発なコミュニティサポートがあり、質問や問題解決の支援を受けることができます。
プロジェクト作成とFilamentインストール
新しいLaravelプロジェクトを以下のように作成します。
composer create-project laravel/laravel companydb
cd companydb
.env
のDB設定を書き換えます。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=companydb
DB_USERNAME=root
DB_PASSWORD=xxxx
mysqlにcompanydb
データベースを新規作成し、migrationコマンドを実行します。
php artisan migrate
filament DOCSに従ってFilamentのインストールをします。
composer require filament/filament:"^3.2" -W
php artisan filament:install --panels
php artisan make:filament-user
ブラウザでhttp://127.0.0.1:8000/admin/
にアクセスすれば作成したユーザとパスワードでログインできます。

ログインすると以下のような画面が表示されます。

データベースモデルを作成する
Model::unguard()
を追加
AppServiceProvider.php
にModel::unguard()
を追加します。
/**
* Bootstrap any application services.
*/
public function boot(): void
{
Model::unguard();
}
Blueprintを使ってモデルを作成する
モデルの作成はBlueprintというツールを使って行います。まず以下のようにインストールし、draft.yaml
ファイルを作成します。
composer require -W --dev laravel-shift/blueprint
php artisan blueprint:new
draft.yaml
に以下の内容を追加し、php artisan blueprint:build
コマンドでモデルとmigrationファイルを生成します。作成したファイルの削除はblueprint:erase
でできます。
models:
Company:
code: string nullable
edi_code: string nullable
name: string index
sector_id: id
is_foreign: boolean default:false
kana: string
ename: string
cname: string
nickname: string
softDeletes
relationships:
belongsTo: Sector, SkhSector
belongsToMany: StockExchange
Sector:
name: string
timestamps: false
relationships:
hasMany: Company
StockExchange:
name: string
relationships:
belongsToMany: Company
BlueprintのStubのカスタマイズ
デフォルトではBlueprintが作成するモデルにすべてprotected $fillable
が作成されていますが、必要がないので以下のようにカスタマイズします。
php artisan blueprint:stubs
これによってstubs/blueprint
が作成され、その中のmodel.fillable.stub
にprotected $fillable = [];
が書いてありますので、コメントを含めてすべて削除します。同様にmodel.guarded.stub
の中身もすべて削除します。