DataTables Editor Command
[!NOTE] The
datatables:editorartisan command generates a complete Editor class with all required methods.
Overview
The Editor command creates a new DataTablesEditor class with:
- Pre-configured model property
- Validation rules for create, edit, and remove
- Ready for customization
Basic Usage
List All Commands
php artisan list | grep datatables
Create Editor Class
php artisan datatables:editor {name}
| Argument | Description |
|---|---|
name |
The base name for your editor class (e.g., Users creates UsersDataTableEditor) |
Command Options
| Option | Description |
|---|---|
--model |
Use singular form as the model name |
--model-namespace="namespace" |
Set custom model namespace |
Examples
Example 1: Basic Editor
php artisan datatables:editor Posts
Creates app/DataTables/PostsDataTableEditor.php:
<?php// app/DataTables/PostsDataTableEditor.php namespace App\DataTables; use App\Models\User;use Illuminate\Database\Eloquent\Model;use Illuminate\Validation\Rule;use Yajra\DataTables\DataTablesEditor; /** @extends DataTablesEditor<User> **/class PostsDataTableEditor extends DataTablesEditor{ protected $model = User::class; public function createRules(): array { return [ 'email' => 'required|email', 'name' => 'required', ]; } public function editRules(Model $model): array { return [ 'email' => 'sometimes|required|email|' . Rule::unique($model->getTable())->ignore($model->getKey()), 'name' => 'sometimes|required', ]; } public function removeRules(Model $model): array { return [ 'DT_RowId' => 'required|exists:' . $model->getTable() . ',id', ]; }}
Example 2: With Model Option
php artisan datatables:editor Posts --model
[!TIP] The
--modeloption uses the singular form (Post) as the model class and includes generics.
Creates app/DataTables/PostsDataTableEditor.php with App\Post model:
<?php// app/DataTables/PostsDataTableEditor.php namespace App\DataTables; use App\Models\Post;use Illuminate\Database\Eloquent\Model;use Illuminate\Validation\Rule;use Yajra\DataTables\DataTablesEditor; /** @extends DataTablesEditor<Post> **/class PostsDataTableEditor extends DataTablesEditor{ protected $model = Post::class; public function createRules(): array { return [ 'email' => 'required|email', 'name' => 'required', ]; } public function editRules(Model $model): array { return [ 'email' => 'sometimes|required|email|' . Rule::unique($model->getTable())->ignore($model->getKey()), 'name' => 'sometimes|required', ]; } public function removeRules(Model $model): array { return [ 'DT_RowId' => 'required|exists:' . $model->getTable() . ',id', ]; }}
Example 3: With Custom Model Namespace
php artisan datatables:editor Posts --model-namespace="Entities"
[!NOTE] This option implicitly activates
--modeland usesApp\Entities\Postas the model.
<?php// app/DataTables/PostsDataTableEditor.php namespace App\DataTables; use App\Entities\Post;use Illuminate\Database\Eloquent\Model;use Illuminate\Validation\Rule;use Yajra\DataTables\DataTablesEditor; /** @extends DataTablesEditor<Post> **/class PostsDataTableEditor extends DataTablesEditor{ protected $model = Post::class; // ... rules methods}
Generated File Location
| Input | Generated File |
|---|---|
datatables:editor Users |
app/DataTables/UsersDataTableEditor.php |
datatables:editor Posts --model |
app/DataTables/PostsDataTableEditor.php |
Next Steps
After generating your Editor class:
- Editor Model - Configure your model's fillable properties
- Editor Rules - Update validation rules for your fields
- Editor Events - Add business logic with event hooks
- Editor Usage - Set up routes and frontend