如何在Laravel 4中软删除模型


How to soft delete a Model in Laravel 4

我有一个Advertisements表,我需要暂时删除一个可以再次启用的记录,我也可以获取删除的结果。

如果您已经使用迁移创建了表,则需要将此添加到迁移文件中:

$table->softDeletes();

这里有更多关于迁移的信息:http://laravel.com/docs/4.2/migrations#creating-migrations

创建并运行迁移时,您需要将表附加到一个Ad模型,并且您的模型需要像这样使用SoftDeletingTrait:

use Illuminate'Database'Eloquent'SoftDeletingTrait;
class Ad extends Eloquent {
  use SoftDeletingTrait;
  protected $dates = ['deleted_at'];
  // ...
}

现在查询模型时"删除"的模型将不包含在查询结果中,如果您想这样做,您可以这样使用withTrashed()方法:

 Ad::withTrashed()->all();

如果您只想要已删除的那个,请使用:

 Ad::onlyTrashed()->all();

有关软删除的更多信息:http://laravel.com/docs/4.2/eloquent#soft-deleting

您只需要在您的advertising .php(广告模型)中添加软删除特性

软删除

use Illuminate'Database'Eloquent'SoftDeletingTrait;
class Advertisement extends Eloquent {
    use SoftDeletingTrait; 
    .....
}

接下来,您需要在表deleted_at(时间戳,默认为null)中添加一个列,现在当您通常删除广告

$advertisement = Advertisement::find($id);
$advertisement->delete();

它将在deleted_at列中添加当前时间戳,并且在deleted_at列有值之前不会获取特定的行。

获取所有软删除值:

$deletedAdvertisement = Advertisement::onlyTrashed()->get();

您可以使用文档获取更多信息:

http://laravel.com/docs/4.2/eloquent insert-update-delete