【问题标题】:Soft delete not working in Laravel 4软删除在 Laravel 4 中不起作用
【发布时间】:2014-02-02 19:42:33
【问题描述】:

启用软删除后(在模型中使用protected $softDelete = true;),我无法成功删除带有Asset::destroy($id) 的项目。该项目不会被删除,deleted_at 不会更新。但是,如果我从模型中删除软删除行,则该项目将从数据库中删除。我无法让软删除工作,甚至无法找出此问题的原因。

这是我的资产模型代码,

<?php

class Asset extends Eloquent {

    protected $guarded = array();

    protected $softDelete = true;   

    public static $rules = array(
            'message' => 'required'
        );

    public static function validate($data)
    {
        return Validator::make($data, static::$rules);
    }
}

【问题讨论】:

  • 你能告诉我们Asset模型类吗?
  • 请贴出你的模型代码。
  • @RubensMariuzzo 资产模型代码已发布..
  • @DennisBraga 模型的代码已发布..
  • 您的迁移中是否有针对此表的 $table-&gt;softDeletes(); 语句,特别是?

标签: php laravel laravel-4


【解决方案1】:

您的迁移中是否有此表的 $table-&gt;softDeletes(); 语句,特别是?

这是你需要让 laravel 知道它必须创建 delete_at 字段,这表明你是否软删除它! =D

【讨论】:

  • 如果我手动添加“deleted_at”字段,它仍然有效吗?还是需要迁移表?
  • 我认为它可能会解决问题......但我不确定!没试过!!
  • @Lucabro 我尝试在 mysql 中手动添加该字段并将其设置为 TIMESTAMP 并且可以为空,但不知何故,它总是自动变为不可为空并获得一个填充为 000-000 的默认值。这就是为什么它没用。当我们在迁移中使用 $table->softDeletes() 创建表时,它会起作用
猜你喜欢
  • 2014-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-19
  • 2017-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多