【Filament 2.x】 artisanコマンドチートシート

# 概要
alpinejs,livewire,tailwindで作られている最強管理画面生成ライブラリ<b>Filament</b>

https://filamentphp.com/

のコマンドチートシート

## まとめ

```terminal
# リソース系
$ php artisan make:filament-resource Customer
$ php artisan make:filament-resource Customer --simple
$ php artisan make:filament-resource Customer --generate
$ php artisan make:filament-resource Customer --view

# ページ系
$ php artisan make:filament-page Settings
$ php artisan make:filament-page Settings --resource=UserResource --type=ViewRecord
$ php artisan make:filament-page Settings --resource=UserResource --type=custom

# リレーションマネージャー系
$ php artisan make:filament-relation-manager CategoryResource posts title
$ php artisan make:filament-relation-manager CategoryResource posts title --soft-deletes
$ php artisan make:filament-relation-manager CategoryResource posts title --attach
$ php artisan make:filament-relation-manager CategoryResource posts title --associate

# フォームビルダー
$ php artisan make:livewire-form HogeForm
# テーブルビルダー
$ php artisan make:livewire-table HogeTable

# ウィジェット系
$ php artisan make:filament-widget StatsOverview --stats-overview
$ php artisan make:filament-widget BlogPostsChart --chart
$ php artisan make:filament-widget LatestOrders --table
$ php artisan make:filament-widget CustomerOverview --resource=CustomerResource

```


## リソースクラス作成

```terminal
$ php artisan make:filament-resource Customer
```

> モデル名と違う名前で生成した際は、モデルクラスの定義を書き換える事
```php
class HogeResource extends Resource
{
    //↓これ
    protected static ?string $model = Store::class;
```

### オプション

| オプション | 効果                                                                                                 | ドキュメントリンク                                                                                      | 
| ---------- | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | 
| `--simple`   | 一覧/作成/編集を1ページのみで管理するManageRecordsクラスを自動生成（作成/編集はモーダルが展開される) | [ドキュメント](https://filamentphp.com/docs/2.x/admin/resources/getting-started#simple-modal-resources) | 
| `--generate` | マイグレーションの情報からフォーム、テーブルの項目を自動生成します                                   | [ドキュメント](automatically-generating-forms-and-tables)                                               | 
| `--view`     | ViewRecordクラスを追加で生成します                                                                   | [ドキュメント](https://filamentphp.com/docs/2.x/admin/resources/getting-started#generating-a-view-page) | 


#### --simleオプションについて

[Filamentデモ](https://demo.filamentphp.com/blog/categories)のCategories管理機能のように、作成・一覧をモーダルで管理するクラスが作成される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/282328/9e63a21f-aea9-58b3-def0-2a30bc148b01.png)


### --generateオプションについて

マイグレーションファイルから項目を自動生成するには`doctrine/dbal`パッケージが必要です
```terminal
$ composer require doctrine/dbal --dev
```


## カスタムページクラス作成

https://filamentphp.com/docs/2.x/admin/pages/getting-started#creating-a-page

```terminal
$ php artisan make:filament-page Settings
```

### オプション

| オプション                                | 効果                                                                   | ドキュメントリンク                                                                                                          | 
| ----------------------------------------- | ---------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | 
| `--resource=UserResource --type=ViewRecord` | UserResourceディレクトリにUserResourceのViewRecordクラスを追加する     | [ドキュメント](https://filamentphp.com/docs/2.x/admin/resources/viewing-records#adding-a-view-page-to-an-existing-resource) | 
| `--resource=UserResource --type=custom`     | UserResourceディレクトリにUserResourceのカスタムページクラスを追加する | [ドキュメント](https://filamentphp.com/docs/2.x/admin/resources/custom-pages)                                               | 

## リレーションマネージャー作成

https://filamentphp.com/docs/2.x/admin/resources/relation-managers

```terminal
$ php artisan make:filament-relation-manager CategoryResource posts title
```
> CategoryResource posts title ↓
> 親リソースクラス名 リレーション名 リレーション先の看板的なカラム名

### オプション

| オプション      | 効果                                                                                                   | ドキュメントリンク                                                                                                      | 
| --------------- | ------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------- | 
| `--soft-deletes`  | 論理削除を管理する機能を追加で作成                                                                     | [ドキュメント](https://filamentphp.com/docs/2.x/admin/resources/relation-managers#handling-soft-deletes)                | 
| `--attach`        | BelongsToMany,MorphToManyのリレーション時に使用する。紐付け/紐付け解除のアクションが追加される         | [ドキュメント](https://filamentphp.com/docs/2.x/admin/resources/relation-managers#associating-and-dissociating-records) | 
| `--associate`| HasMany, HasManyThrough,MorphManyのリレーション時に使用する。紐付け/紐付け解除のアクションが追加される | [ドキュメント](https://filamentphp.com/docs/2.x/admin/resources/relation-managers#associating-and-dissociating-records) | 

## フォームビルダー作成

フォームビルダーlivewireコンポーネントを作成します。

```terminal
$ php artisan make:livewire-form クラス名
```
↓とやってる事は同じです

https://filamentphp.com/docs/2.x/forms/getting-started#preparing-your-livewire-component


## テーブルビルダー作成

テービルビルダーlivewireコンポーネントを作成します。

```terminal
$ php artisan make:livewire-table クラス名
```
↓とやってる事は同じです

https://filamentphp.com/docs/2.x/tables/getting-started#preparing-your-livewire-component

## ウィジェット

```terminal
$ php artisan make:filament-widget CustomViewWidget
```

> オプション未指定だと、Widgetクラスと対応するbladeファイルが生成されます。
自分で見た目を構築する必要あり。

### オプション

| オプション                  | 効果                                                     | ドキュメントリンク                                                       | 
| --------------------------- | -------------------------------------------------------- | ------------------------------------------------------------------------ | 
| --stats-overview            | カード形式のテンプレートが作成                           | [ドキュメント](https://filamentphp.com/docs/2.x/admin/dashboard/stats)   | 
| --chart                     | チャート形式のテンプレートが作成                         | [ドキュメント](https://filamentphp.com/docs/2.x/admin/dashboard/charts)  | 
| --table                     | テーブル形式のテンプレートが作成                         | [ドキュメント](https://filamentphp.com/docs/2.x/admin/dashboard/tables)  | 
| --resource=リソースクラス名 | 指定したリソースディレクトリ下にウィジェットクラスが作成 | [ドキュメント](https://filamentphp.com/docs/2.x/admin/resources/widgets) |