Laravel Nova列表批量强制删除改软删除的配置位置咨询

解决步骤
确认模型软删除配置
业务模型必须正确启用软删除特性:
在模型类中引入SoftDeletestrait:use Illuminate\Database\Eloquent\SoftDeletes; class YourModel extends Model { use SoftDeletes; // 其他模型逻辑代码 }同时对应的数据表需包含
deleted_at字段,若未添加可通过迁移文件使用$table->softDeletes()创建。自定义Nova资源的批量操作
Laravel Nova会根据列表记录状态自动加载删除操作:若列表包含已软删除的记录,会自动显示“Force Delete Selected”。如果想仅保留软删除的批量操作,在对应Nova资源文件(如app/Nova/YourResource.php)中重写actions方法,手动指定加载的操作:use Laravel\Nova\Actions\DeleteAction; use Laravel\Nova\Resource; class YourResource extends Resource { // 资源其他配置项 public function actions(Request $request) { return [ DeleteAction::make()->onlyOnIndex(), // 若不需要恢复已软删除记录的功能,可移除下面这行 // RestoreAction::make()->onlyOnIndex(), ]; } }限制列表仅展示正常记录
如果资源默认查询了已软删除的记录(比如使用withTrashed()),Nova会自动显示强制删除选项。可通过重写资源的indexQuery方法,强制仅加载未删除的记录:public static function indexQuery(NovaRequest $request, $query) { return $query->withoutTrashed(); }
内容的提问来源于stack exchange,提问作者Andy Koe
相关产品推荐
相关产品推荐

