我有一个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