Laravel replication — как сделать копию документа


Как сделать копию документа в Laravel — replicate

В общем возникла такая у меня задачка — делать копии документов, при этом чтобы id, точнее поле рег всегда выдавало последнее значение. В общем все получилось — кому нужно — пользуйтесь. Laravel версия 7 с чем то там 🙂

Ниже функция самого контроллера.

public function DocReplicate($id) {
        $doclast = Doc::orderby('id', 'desc')->first();
        $doc = Doc::find($id);
        $newDoc = $doc->replicate();
        $newDoc->reg = $doclast->reg + 1;
        $newDoc->save();
        return redirect()
            ->back()
            ->with('success', 'Копия документа создана');
    }

Маршрут:

Route::get('replicate/{id}', [
        'uses' => 'DocController@DocReplicate',
        'as' => 'documents.replicate'
    ]);

Кнопка сделать копию:

 <a href="{{ route('documents.replicate', ['id' => $doc->id]) }}"><button type="button" class="btn btn-sm btn-secondary float-left mr-1">
                      <i class="fa fa-copy"></i></button></a>

Replicate: создать копию записи

Принцип простой — я вначале ищу последний документ в таблице, чтобы взять у него последний reg номер, затем при сохранении прибавляю к нему + 1 чтобы получить последний рег. Это если он вам вообще нужен — я просто не хочу показывать тут id.

Затем на документе есть кнопка скопировать, при нажатии берется id документа, и по нему прото делается копия, и копии присваивается последний рег. Потом идет возврат на ту же страницу.

Если тут нужно изменять другие поля через контроллер — делаем аналогично с регом. Можно дописать _copy или что вам нравится. Вот так это все выглядит.

Laravel replication - как сделать копию документа

Потом просто нажимаетм кнопку edit — и правим все что нужно. тут у меня всего 3 поля, причем дата создается на авто. А если будет 50 — точно оцените для чего все это затевалось,

Будут вопросы — задавайте.

Рубрика: laravel

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *