软删除laravel 5中表格中的所有记录

时间:2017-08-07 10:47:49

标签: php mysql laravel-5 model controller

有没有办法软删除表中的所有现有行? 我试过(Prospect :: delete();)它永久删除了所有行,但它不能用于软删除。

3 个答案:

答案 0 :(得分:1)

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

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

如果您使用的是Laravel framework 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.所以你可以使用第三种方法。

答案 1 :(得分:0)

查看此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列将设置为当前日期和时间。并且,在查询使用软删除的模型时,软删除的模型将自动从所有查询结果中排除。

要确定某个模型实例是否已被软删除,请使用trashed方法:

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

答案 2 :(得分:0)

它通常不会删除数据库中的行。您应该添加一列isActive等并设置它(1/0)或(true / false)。 如果你想要显示行,你应该“从表中选择* isActive = 1”