php - Laravel 使用 slug 进行独特验证
问题描述
我有两个选择,要么用户提供自定义的 unique_id,然后我通过Str::slug($request->custom)
它进行转换,要么通过它生成Str::random(6)
我的代码:
$post = new Post;
$unique_id = Str::random(6);
$idcustom = Str::slug($request->custom);
$this->validate($request, [
'custom' => 'max:25|string|unique:posts,unique_id' . Str::slug($post->unique_id),
]);
如果用户创建自定义 id,$idcustom
则插入到数据库中,如果他只是将字段留空,则$unique_id
插入。但是,如果已经有一个条目,例如“堆栈溢出”,我会收到一个 SQL 错误,表明已经有一个具有该名称的条目,但如果它像“stackoverflow”,它应该像它应该的那样工作。所以它与蛞蝓有关,我在这里做错了什么?
解决方案
我认为您不能将“后备”值放入验证规则中。您可能希望$request->custom
在将其与随机字符串交换之前手动检查?
不确定这是否会有所帮助...您的问题尚不清楚您是要创建新用户还是更新现有用户。如果更新现有用户,请不要忘记从检查当前用户中排除:
'custom' => ['max:25', 'string',
Rule::unique('users')->ignore($user->id)],
推荐阅读
- javascript - JSDoc:在另一个@param 中引用方法的@param
- angular - Angular 6 - 使用 Chrome 缓慢打开 Mat-Dialog
- c++ - 试图编译 googletest 但出现以下错误:'::OpenThread' 尚未声明
- ios - 快速在右栏按钮项中添加徽章警报
- c# - MySQL C# 错误;“连接必须有效且打开”
- c - vxWorks 6.9下的shell会话和调试printf
- c - 如何在 Linux 上为 gcc 制作一个简单的 makefile
- java - 获取窗口状态
- python - 使用 3 空间坐标的 3 空间对象的体积
- sql - SQL Server 多连接