如何在Laravel 4中软删除模型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Laravel 4中软删除模型相关的知识,希望对你有一定的参考价值。
我有一张Advertisements
表,我需要暂时删除一条可以再次启用的记录,我也可以获取已删除的结果。
答案
你只需要在你的Advertisement.php(广告模型)中添加软删除特征
对于软删除:
use IlluminateDatabaseEloquentSoftDeletingTrait;
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
另一答案
如果您使用迁移创建了表,则需要将其添加到迁移文件中:
$table->softDeletes();
这里有关于迁移的更多信息:http://laravel.com/docs/4.2/migrations#creating-migrations
一个迁移创建和运行你需要将你的表附加到一个Ad
模型,你的模型需要像这样使用SoftDeletingTrait
:
use IlluminateDatabaseEloquentSoftDeletingTrait;
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
以上是关于如何在Laravel 4中软删除模型的主要内容,如果未能解决你的问题,请参考以下文章