/** * Boot the soft deleting trait for a model. * * @return void */ publicstaticfunctionbootSoftDeletes(){ static::addGlobalScope(new SoftDeletingScopeEx()); }
/** * Get the name of the "deleted at" column. * * * @return string */ publicfunctiongetDeletedAtColumn() { // 自定义标识字段 return'is_deleted'; }
/** * Perform the actual delete query on this model instance. * * @return void */ protectedfunctionrunSoftDelete(){ $query = $this->newQueryWithoutScopes()->where($this->getKeyName(), $this->getKey());
/** * Restore a soft-deleted model instance. * * @return bool|null */ publicfunctionrestore(){ // If the restoring event does not return false, we will proceed with this // restore operation. Otherwise, we bail out so the developer will stop // the restore totally. We will clear the deleted timestamp and save. if ($this->fireModelEvent('restoring') === false) { returnfalse; }
$this->{$this->getDeletedAtColumn()} = 0;
// Once we have saved the model, we will fire the "restored" event so this // developer will do anything they need to after a restore operation is // totally finished. Then we will return the result of the save call. $this->exists = true;
$result = $this->save();
$this->fireModelEvent('restored', false);
return $result; }
/** * Determine if the model instance has been soft-deleted. * * @return bool */ publicfunctiontrashed(){ return ! ($this->{$this->getDeletedAtColumn()} === 0); } }