laravel - 与laravel中的另一列相比,如何使用规则:唯一的值数组?
问题描述
我有一个值数组的请求,我用下面的代码验证它
$request->validate([
'doctor_id.*' => ['required'],
'doctor_id' => [Rule::unique('project_orders')->where(function ($query) use ($student) {
$query->where('student_id', $student->id);
})],
]);
但是唯一验证不起作用,并且数据被重复插入到表中
我希望医生 ID 字段与 student_id 列是唯一的,正确的规则应该是什么?
请问有什么帮助吗?
解决方案
首先,您需要在数据库级别进行验证,因此您将添加迁移
$table->unique(['doctor_id', 'student_id']);
这将确保相同doctor_id
和student_id
值不会重复
然后在您的验证层中,您将添加
$request->validate([
'doctor_id.*' => 'unique:project_orders,doctor_id,NULL,id,student_id,'.$student->id,
]);
推荐阅读
- elasticsearch - 分片和副本的基本分布方式
- python - 使用python获取名称='XXX'的HTML内容
- jquery - 每秒添加一个活动类,不同背景的li
- javascript - 将 AsyncStorage 从 react-native 迁移到 @react-native-community/async-storage,旧保存的数据丢失
- python - Python 不会从它导入另一个的同一个文件夹中导入模块
- element-ui - Element-UI:如何增加按钮的图标大小?
- vue.js - 如何将由 HTML、CSS 和 JS 组成的页面从 Electron-Project 移动到 Vue Project?
- generics - 如何在同一类型但未声明 Kotlin 的变量上调用泛型类型 T 类中的方法
- wso2 - 帮助 WSO2 IoT 服务器
- linux - 如何使用 Ansible ad-hoc 显示进程列表?