Introduction
Resources are static classes that are used to build CRUD interfaces for your Eloquent models. They describe how administrators should be able to interact with data from your app - using tables and forms.
Create a migration
php artisan make:migration create_blogs_table
and edit it :
Schema::create('blogs', function (Blueprint $table) {
    $table->id();
    $table->string('slug');
    $table->string('title');
    $table->text('body')->nullable();
    $table->timestamps();
});
Create a model
First, create laravel model for your resource.
php artisan make:model Blog
add column to $fillable property in app\Models\Blog.php
protected $fillable = [
    'slug',
    'title',
    'body',
];
Create a resource
To create a resource for the App\Models\Blog model:
php artisan make:filament-resource Blog
This will create several files in the app/Filament/Resources directory:
.
+-- BlogResource.php
+-- BlogResource
|   +-- Pages
|   |   +-- CreateBlog.php
|   |   +-- EditBlog.php
|   |   +-- ListBlogs.php
Configure resource table
Open app\Filament\Resources\BlogResource.php and edit table method :
public static function table(Table $table): Table
{
    return $table
        ->columns([
            TextColumn::make('title'),
            TextColumn::make('slug'),
        ])
        ->filters([
            //
        ])
        ->actions([
            Tables\Actions\EditAction::make(),
        ])
        ->bulkActions([
            Tables\Actions\BulkActionGroup::make([
                Tables\Actions\DeleteBulkAction::make(),
            ]),
        ])
        ->emptyStateActions([
            Tables\Actions\CreateAction::make(),
        ]);
}
There we add a TextColumn, filament will automatically detect it according to the column name in the database table
Read about TextColumn here
Configure resource form
Open app\Filament\Resources\BlogResource.php and edit form method :
public static function form(Form $form): Form
{
    return $form
        ->schema([
            TextInput::make('title'),
            TextInput::make('slug'),
            Textarea::make('body')
                ->columnSpanFull()
                ->rows(10)
        ]);
}
Run migration
php artisan migrate
and finally, you have a CRUD feature for Blog Resource. Open admin/blogs  in your browser
 

 
    
Top comments (0)