Laravel类型提示,在模型保存时id返回null

问题描述

我正在尝试使用类型提示来存储值。

public function store(Model $model,ModelRequest $request) {
    $model->create($request->validated())->save();
    dd($model->id);
}

但是,Id返回null。

解决方法

正如@aimme在评论中所说,您不需要save()方法。 save()方法返回 true false

如果您确实需要查看发生了什么:

$new_created= $model->create($request->validated());
dd($new_created->id);

如果它不起作用,则必须检查$ request-> validated()的返回值:

dd($request->validated());
,

您实际上不能将implicit route model binding用于存储方法,因为您无法通过尚不存在的ID(因此没有ID)访问模型。来自官方文档:

Laravel将自动注入ID匹配请求URI中相应值的模型实例。

因此,您必须手动创建模型,例如像这样

 public function store(StoreUserRequest $request) {
    $user = User::create($request->all());
 }