laravel-backpack - 如何将背包克隆功能用于独特的字段形式
问题描述
Backpack Crud 具有克隆功能。但是当我们的表具有唯一的字段列时,它就不起作用了。 背包克隆文档 当表有唯一列时如何克隆它?
public function clone($id)
{
$this->crud->hasAccessOrFail('clone');
$this->crud->setOperation('clone');
$clonedEntry = $this->crud->model->findOrFail($id)->replicate();
return (string) $clonedEntry->push();
}
解决方案
最近我遇到了同样的问题。这是我的解决方案:
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();
}
您没有指定有关该“唯一”属性的任何内容。随意根据您的需要自定义解析器。
推荐阅读
- c# - SSRS 或 RDLC 中的 Fan Char
- python - 在Django中按类别排序
- azure-active-directory - 方法调用失败 [Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext] 不包含名为“AcquireTokenAsync”的方法
- scheme - 手动执行函数体替换以查看过程如何工作
- python - python“升级”连接从HTTP到TCP,如何?
- dart - Dokan 使用 REST API 更新设置错误
- c# - 如何在资产中找到所有 .cs 文件类型?
- python - Heroku 在页面更改时默认为 127.0.0.01
- openscad - OpenSCAD - 什么是节点?
- pytorch - 在对角线上获得对称 Torch 张量的优雅方法