Есть ли функция, которая восстанавливает обратимо удаленную запись из шаблона проектирования репозитория?

Я использую шаблон проектирования репозитория в своем коде, и теперь я хочу восстановить свои обратимо удаленные записи. но я не смог найти решения этой проблемы, используя шаблон проектирования репозитория. Я использую apiato http://apiato.io/ фреймворк, основанный на laravel. Я хочу восстановить свою запись в Task.

Это мой класс модели

class Property extends Model
{
    use SoftDeletes;
}

И это мои коды репозитория для удаления.

class DeletePropertyTask extends Task
{

    protected $repository;

    public function __construct(PropertyRepository $repository)
    {
        $this->repository = $repository;
    }

    public function run($id)
    {
        try {
            $result = $this->repository->delete($id);
            return $result;
        }
        catch (Exception $e) {
            throw new DeleteResourceFailedException(null, null, null, null, $e);
        }
    }
}

person Mohammad Askari    schedule 24.09.2019    source источник


Ответы (4)


Восстановление мягко удаляемой записи из задачи

$this->repository::withTrashed()->findorfail($id)->restore();
person Cloudstar Mohan    schedule 24.09.2019

В Eloquent есть способ восстановления обратимо удаленных записей с помощью функции restore(). Вот ссылка на документацию для получения дополнительной информации.

person rkg    schedule 24.09.2019
comment
класс репозитория apiato отличается от eloquent, и не существует некоторых методов. и это не работает нормально - person Mohammad Askari; 24.09.2019
comment
Это не withTrash(), а withTrashed() будьте осторожны с написанием метода. - person rkg; 25.09.2019

Если вы хотите восстановить мягко удаляемую запись, вы можете использовать свойство restore().

public function restore($id)
{
    $this->repository->find($id)->restore();
}

дополнительная информация

person dfevrier    schedule 24.09.2019
comment
В классе репозитория apiato, если запись мягко удалена, она не возвращается при простом поиске. и следует использовать метод withTrash, который также не существует. - person Mohammad Askari; 24.09.2019

Я нашел решение. В классе репозитория apiato есть имя метода makeModel(), когда вы вызываете этот метод, все меняется на красноречивые функции. после этого вы можете использовать метод withTrash для поиска между обратимо удаленными записями и найти нужную запись, после этого вызовите метод restore().

$this->repository->makeModel()->withTrash()->where('id',$property_id')->first()->restore();
person Mohammad Askari    schedule 24.09.2019