как использовать функцию клона рюкзака для уникальной формы поля - PullRequest
1 голос
/ 03 апреля 2020

Рюкзак Crud имеет функцию клона. Но это не работает, когда наша таблица имеет уникальный столбец поля. Документация по клону рюкзака Когда в таблице есть уникальный столбец, как ее клонировать?

public function clone($id)
    {
        $this->crud->hasAccessOrFail('clone');
        $this->crud->setOperation('clone');

        $clonedEntry = $this->crud->model->findOrFail($id)->replicate();

        return (string) $clonedEntry->push();
    }

1 Ответ

1 голос
/ 07 апреля 2020

Недавно у меня возникла такая же проблема. Вот мое решение:

public function clone($id)
{
    $this->crud->hasAccessOrFail('clone');
    $this->crud->setOperation('clone');

    $clonedEntry = $this->crud->model->findOrFail($id)->replicate();

    // now resolve the value for unique attribute before save. e.g.
    $slug = Str::slug($clonedEntry->name, '-');
    $count = $this->crud->model->whereRaw("slug RLIKE '^{$slug}(-[0-9]+)?$'")->count();
    $clonedEntry->slug = $count ? "{$slug}-{$count}" : $slug;

    // when you are done, save changes
    return (string) $clonedEntry->push();
}

Вы не указали ничего об этом "уникальном" атрибуте. Не стесняйтесь настроить распознаватель в соответствии с вашими потребностями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...