【问题标题】:Soft Delete all records from a table in laravel 5软删除laravel 5中表中的所有记录
【发布时间】:2017-08-07 10:47:49
【问题描述】:

有什么方法可以软删除表中的所有现有行? 我已经尝试过( Prospect::delete(); )它永久删除了所有行,但它在软删除中不起作用。

【问题讨论】:

  • 添加一列isDeleted并设置为true
  • 正如 juergen 所说,到目前为止,我认为是最简单的方法。我也很困惑......从来没有读过那么多关于软删除的文章,今天它是关于 laravel 中软删除的第 5 个问题 ô.o
  • juergen d,你能解释一下吗?
  • @Moiz 他只是意味着你应该在你的数据库中添加一个isDeleted 列。然后,当您想soft delete 某事时,您只需将此字段设置为 true,否则为 false。然后在你的前端,只显示所有结果where isDeleted = false
  • 谢谢@Twinfriends

标签: php mysql laravel-5 model controller


【解决方案1】:

如果您使用的是 4.2 之前的 Laravel 框架,那么您可以将模型中的软删除设置为,

class ModelName extends Eloquent {
    protected $table = 'table_name';
    protected $softDelete = true;
}

如果您使用的是 Laravel 框架 4.2,那么您可以将模型中的软删除设置为,

use Illuminate\Database\Eloquent\SoftDeletingTrait;
class ModelName extends Eloquent {
    use SoftDeletingTrait;
    protected $table = 'table_name';
}

如果你使用的是4.2以上的Laravel框架,那么你可以在你的模型中设置软删除为,

use Illuminate\Database\Eloquent\SoftDeletes;
class ModelName extends Eloquent {
    use SoftDeletes;
    protected $table = 'table_name';
}

我希望你使用的是 Laravel 5。所以你可以使用第三种方法。

【讨论】:

    【解决方案2】:

    看看这个soft delete

    在你的模型中使用这个特性:

    use Illuminate\Database\Eloquent\SoftDeletes;
    

    并将其添加到您的模型和数据库架构中:

    型号:

    class Flight extends Model
    {
        use SoftDeletes;
    
        /**
         * The attributes that should be mutated to dates.
         *
         * @var array
         */
        protected $dates = ['deleted_at'];
    }
    

    数据库架构

    Schema::table('flights', function ($table) {
        $table->softDeletes();
    });
    

    现在,当您在模型上调用 delete 方法时,deleted_at 列将被设置为当前日期和时间。并且,当查询使用软删除的模型时,软删除的模型将自动从所有查询结果中排除。

    要确定给定模型实例是否已被软删除,请使用垃圾箱方法:

    if ($flight->trashed()) {
        //
    }
    

    【讨论】:

      【解决方案3】:

      它通常不会删除数据库中的行。您应该添加一个列 isActive 等并将其设置为 (1/0) 或 (true/false)。 如果你想显示行,你应该 "Select * from table Where isActive=1"

      【讨论】:

        猜你喜欢
        • 2023-03-26
        • 2016-03-05
        • 1970-01-01
        • 1970-01-01
        • 2015-08-22
        • 1970-01-01
        • 2016-07-24
        • 2018-06-20
        相关资源
        最近更新 更多