如何在Laravel 4中软删除模型

问题描述 投票:0回答:2

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

php laravel-4
2个回答
0
投票

你只需要在你的Advertisement.php(广告模型)中添加软删除特征

对于软删除:

use Illuminate\Database\Eloquent\SoftDeletingTrait;

class Advertisement extends Eloquent {

    use SoftDeletingTrait; 

    .....
}

接下来,您需要在表deleted_at(timestamp,default 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


1
投票

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

$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

© www.soinside.com 2019 - 2024. All rights reserved.