gpt4 book ai didi

php - 使用 laravel 验证检查名称在未删除项目中是否唯一

转载 作者:IT王子 更新时间:2023-10-28 23:57:57 25 4
gpt4 key购买 nike

我有一个简单的表单,它发送到一个 Controller ,该 Controller 检查某个项目的名称是否已被特定项目使用。如果是,则返回错误。这是我为此使用的代码:

'name'    => 'required|min:1|unique:versions,name,NULL,id,project_id,'.$project->id,

我遇到的问题是,我没有使用硬删除,而是使用软删除将它们从数据库中删除,这意味着,例如,“Test”只能用作名称一次,即使它已被删除。

我如何让它检查它在未软删除的项目中对于该项目是否是唯一的?

最佳答案

你可以试试这个:

'name' => 'required|min:1|unique:versions,name,NULL,id,deleted_at,NULL'

这将确保 versions 表中的 name 是唯一的,如果一条记录被软删除并且具有相同的名称 name 那么它将不会被计算在内, 意味着即使存在同名的软删除记录,名称也将被接受。

要在更新时忽略模型,您应该在 name 之后传递 id 而不是第一个 NULL

更新:您也可以使用类似这样的东西来添加您自己的自定义规则:

// You can declare it inside your controller method before you run validation
Validator::extend('unique_project', function($attribute, $value, $parameters)
{
// $attribute will contain field name, i.e. name
// $value will contain the value in the $attribute/name
// $parameters will be an array of arguments passed
// i.e. [0] => arg1, [1] => arg2, [2] => arg3 and so on

return true for valid and false for invalid

});

你可以这样使用它:

'name' => 'required|min:1|unique_project:arg1,arg2,arg3' // add more args if needed

关于php - 使用 laravel 验证检查名称在未删除项目中是否唯一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23374995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com