laravel 如果您 edit/update 该特定对象,则表示已使用唯一名称

laravel unique name says already taken if you edit/update that particular object

我有一个 table 投资组合,我没有在 url 中显示投资组合的 ID,而是使用 getRouteKeyName() 显示投资组合的名称。所以我希望名称是唯一的,否则如果它已经存在,它可能会显示错误的投资组合。我将名称字段的规则设置为唯一。如果我现在 edit/update 投资组合,它说:"The name is already taken."

我该如何解决这个问题?它需要是唯一的,但如果您在不更改名称的情况下更新该投资组合,它不应该这样说,对吗?

模型投资组合:

public function getRouteKeyName()
{
    return 'name';
}

投资组合请求:

public function rules()
{
    return [
        'name' => 'required|max:30|unique:portfolios',
    ];
}

您必须将额外的属性传递给规则

public function rules()
{
    return [
        'name' => 'required|max:30|unique:portfolios,name,'.$name.
    ];
}

$name 是您要跳过的变量。

希望对您有所帮助