如何在验证必须唯一的内容时从登录用户中排除该行(除了来自用户本身的行)?
提前致谢!
答案 0 :(得分:2)
你的问题不是很清楚。如果您正在谈论用户个人资料更新(当用户必须拥有唯一的电子邮件,但他的电子邮件已经在数据库中)时,您应该从文档中阅读:
有时,您可能希望在唯一检查期间忽略给定的ID。例如,考虑一个“更新配置文件”屏幕,其中包括用户的名称,电子邮件地址和位置。当然,您需要验证电子邮件地址是否唯一。但是,如果用户只更改名称字段而不是电子邮件字段,则不希望抛出验证错误,因为用户已经是电子邮件地址的所有者。
为了指示验证者忽略用户的ID,我们将使用Rule类来流畅地定义规则。在此示例中,我们还将验证规则指定为数组,而不是使用|用于划分规则的字符:
use Illuminate\Validation\Rule;
Validator::make($data, [
'email' => [
'required',
Rule::unique('users')->ignore($user->id),
],
]);
答案 1 :(得分:1)
您可以在验证规则中传递登录用户的ID - getDownloadURL()
,如下所示:
unique
$validator = Validator::make($request->all(), [ 'email' => 'unique:users,email,' . auth()->id, ]); // This will validate unique email in users table except the column referenced to the logged in user id.
详细了解
unique
规则
希望这有帮助!