jeudi 26 avril 2018

Laravel SoftDelete magics

I am trying to figure out why the restore of SoftDeletes is declared on both Scope and Trait:

SoftDeletingScope

protected function addRestore(Builder $builder)
{
    $builder->macro('restore', function (Builder $builder) {
        $builder->withTrashed();

        return $builder->update([$builder->getModel()->getDeletedAtColumn() => null]);
    });
}

trait SoftDeletes

public function restore()
{
    // 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) {
        return false;
    }

    $this->{$this->getDeletedAtColumn()} = null;

    // 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;
}

What are the uses for the first and the latter ? I am trying to build my own traits/scopes based on Laravel usages, but I just don't get this one..



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire