使用隐式路由模型绑定时如何获取 id,我需要它进行唯一验证

How to get id When Using Implicit Route Model Binding, i need it in unique validation

// 在验证部分 "alias" 字段应该是唯一的,所以我需要这个 NursingHome 对象 ID(主键)来强制验证不检查这个 ID。

我用$nursinghome->getKey()方法检查过,但没有成功。

public function update(Request $request, NursingHome $nursinghome)
{
 $request->validate([
   'name' => 'required|string|max:255',
   'address' => 'nullable|string',
   'alias' => 'required|string|unique:nursing_home,'.$nursinghome->id,

]);

    $data = $request->all();
    $data['updated_by'] = Auth::guard('api')->id();
    $nursinghome->update($data);

    return response()->json($nursinghome, 200);
}

laravel github 中讨论了一个已知问题,即如果您的模型有两个词,如 NursingHome,则它不会注入控制器:

    public function update(Request $request, $id){

        $nursinghome = NursingHome::find($id); //now you will get $nursinghome->id

        $request->validate([
            'name' => 'required|string|max:255',
            'address' => 'nullable|string',
            'alias' => 'required|string|unique:nursing_home,'.$nursinghome->id,
        ]);

        $data = $request->all();
        $data['updated_by'] = Auth::guard('api')->id();
        $nursinghome->update($data);

        return response()->json($nursinghome, 200);
    }

如果您的模型有两个或更多单词,您必须只使用小写字母。