Laravel | Unique validation where clause(拉拉维尔 |唯一验证 where 子句)
问题描述
我正在尝试验证存在的电子邮件地址的输入,但仅当 company_id 与随请求传入的 company_id 相同时才有效.
I am trying to validate the input of a email address that exists but only when the company_id is the same as the company_id which is passed in with the request.
我收到此错误...
SQLSTATE[42S22]:未找到列:1054 'where 子句'中的未知列 '1'(SQL:选择 count(*) 作为来自 company_users 的聚合,其中 email_address = myemail.com 和 1 <> company_id)>
SQLSTATE[42S22]: Column not found: 1054 Unknown column '1' in 'where clause' (SQL: select count(*) as aggregate from company_users where email_address = myemail.com and 1 <> company_id)
我在网上阅读过,这样做的方法是将验证中的表和列关联起来,这就是我正在做的.
I have read online and the way to do it is to associate the table and the column inside of the validation which is what I am doing.
这是我当前的代码...
This is my current code...
required|email|unique:company_users,email_address,company_id,' . $request->company_id
推荐答案
这里有一个粗略的想法,你可以实现你的目标
Here is a rough idea with this you can achieve what you
您可以使用 Rule
类为您自定义验证规则.
You can use Rule
class to customize the validation rule for you.
'email' => ['required', 'string', 'email', 'max:191',Rule::unique('users')->where(function ($query) use ($request) {
return $query->where('company_id', $request->company_id);
})],
希望能帮到你
这篇关于拉拉维尔 |唯一验证 where 子句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:拉拉维尔 |唯一验证 where 子句


基础教程推荐
- MySQL根据从其他列分组的值,对两列之间的值进行求和 2022-01-01
- 从字符串 TSQL 中获取数字 2021-01-01
- 如何在 CakePHP 3 中实现 INSERT ON DUPLICATE KEY UPDATE aka upsert? 2021-01-01
- ORA-01830:日期格式图片在转换整个输入字符串之前结束/选择日期查询的总和 2021-01-01
- while 在触发器内循环以遍历 sql 中表的所有列 2022-01-01
- CHECKSUM 和 CHECKSUM_AGG:算法是什么? 2021-01-01
- 带有WHERE子句的LAG()函数 2022-01-01
- 带更新的 sqlite CTE 2022-01-01
- MySQL 5.7参照时间戳生成日期列 2022-01-01
- 使用 VBS 和注册表来确定安装了哪个版本和 32 位 2021-01-01