我有一个Advertisements
表,我需要暂时删除一条可以再次启用的记录,我也可以获取已删除的结果。
答案 0 :(得分: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
答案 1 :(得分: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();
您可以使用文档获取更多信息: