laravel - 在 Laravel 中使用 Unique
问题描述
我正在用 Laravel 构建一个图书门户。我有一个关于书名的唯一验证规则。
$request->validate([
'name' => 'required|unique:books',
'about' => 'required',
'dsecription' => 'required',
'image' => 'required|mimes:jpeg,bmp,jpg,png|between:1, 6000',
'author_id' => 'required',
'publisher' => 'required',
'recommended' => 'required',
'epub_url' => 'required',
'year'=> 'required',
'pages' => 'required',
]);
我发现作者可以有相同的书名。使用唯一的名称,将不允许我上传。
我在想,如果有办法,我可以检查作者和书名,即
检查作者是否具有相同的姓名,然后在姓名上传时应用唯一规则。
解决方案
我没有找到任何解决方案。这就是为什么我像这样进行自己的自定义验证:
$request->validate([
'name' => 'required|unique:books',
'author_id' => 'required',
// ...
]);
$data = Book::where('author_id', $request->author_id)->where('name', $request->name)->first();
if(!empty($data)) {
return redirect()->back()->withErrors('This name already taken'); // error message
}
推荐阅读
- javascript - 从库中装饰类
- javascript - 需要帮助调整 javascript 功能
- jquery - 为什么返回模板时django上下文是一个字符串?
- javascript - Ajax 表单提交被忽略
- entity-framework - EF Core:来自内容实体的可选一对一外键关系
- python - 创建从字典键到它的值的所有组合的 Pythonic 方法
- java - MissingServletRequestPartException:所需的请求部分“文件”不存在 Springboot
- android - 如何使用范围存储创建外部目录并授予对目录 android 的访问权限
- python - 无法安装 mysqlcient:无法打开包含文件:'mysql.h'
- python - 如何从 Python 列表的末尾获取 N 个元素?N >= 零