You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 10中软删除记录仍被查询出的问题求助

问题解决方法

1. 确认SoftDeletes命名空间已导入

你的Category模型代码里仅写了use SoftDeletes;,但如果未导入对应的命名空间,这个trait不会生效。在模型顶部补充命名空间导入:

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Category extends Model
{
    use SoftDeletes;

    protected $fillable = [
        'name',
        'slug',
        'description',
        'is_active',
        'image',
    ];
}

2. 排查是否移除了软删除全局作用域

检查模型的boot方法,若存在移除默认软删除作用域的代码,会导致查询不过滤已软删记录。比如以下代码需要删除:

protected static function boot()
{
    parent::boot();
    // 移除这行:static::withoutGlobalScope(\Illuminate\Database\Eloquent\SoftDeletingScope::class);
}

3. 清除应用缓存

缓存可能导致模型变更未生效,执行命令清空缓存:

php artisan optimize:clear

4. 二次确认数据库字段结构

虽然你提到软删除时deleted_at字段能正确赋值,仍建议确认categories表的deleted_at字段类型为timestamp且允许为空,确保字段结构符合要求。

完成以上步骤后,重新执行Category::latest('id')->paginate(20),查询会自动带上where deleted_at is null的过滤条件。

内容的提问来源于stack exchange,提问作者Nafis Chonchol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 22:27:07