Laravel Eloquent - 软删除无效

3

我在我的迁移文件中添加了$table->softDeletes(),并在模型中添加了protected $softDelete = true;。同时,在表中我也有deleted_at这一字段。但是每当我调用delete()方法时,整行记录都会被删除。以下是我的删除代码:

Schedule::whereId($id)->whereClientId($client_id)->delete();

我做错了什么?


1
我认为应该可以工作。您使用的是Laravel 4或更高版本吗?请确保protected $softDelete = true;已经设置好了。如果您运行dd(new Schedule());,您应该能够看到"softDelete":protected]=> bool(true) - Matteus Hemström
是的,它确实有 protected 'softDelete' => boolean true 但我发誓它被删除了!而且我正在使用 Laravel 4.2。 - Kousha
你确定它是从数据库本身被删除的吗? - ceejayoz
是的,我正在查看数据库,该行已完全删除。 - Kousha
请在查询后添加 var_dump(DB::getQueryLog()); 并分享结果。 - Razor
2个回答

5
如果有人遇到这个问题,你仍然可以在Laravel 5中使用SoftDeletes。只需使用softdeletes trait即可。
namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes; //<--- use the softdelete traits

class YourModel extends Model
{
    use SoftDeletes; //<--- use the softdelete traits

    protected $dates = ['deleted_at']; //<--- new field to be added in your table

    protected $fillable = [

    ];
}

您可以查看Laravel文档这篇关于如何软删除的优秀教程


0
如果您因为某种原因要覆盖 \Illuminate\Database\Eloquent\Model::boot 方法,请确保在该方法中调用 parent::boot,以便可以启动 traits(例如 SoftDeletes)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接