Laravel 类型提示,模型保存时 id 返回 null
Posted
技术标签:
【中文标题】Laravel 类型提示,模型保存时 id 返回 null【英文标题】:Laravel type hinting, id return null on model save 【发布时间】:2021-01-25 21:47:13 【问题描述】:我正在尝试使用类型提示来存储值。
public function store(Model $model, ModelRequest $request)
$model->create($request->validated())->save();
dd($model->id);
但是,Id 返回 null。
【问题讨论】:
create() 后无需调用 save() 【参考方案1】:正如@aimme 在评论中所说,您不需要 save() 方法。 save() 方法返回 true 或 false。
如果您真的需要查看附加内容:
$new_created= $model->create($request->validated());
dd($new_created->id);
如果它不起作用,那么你必须检查 $request->validated() 的返回:
dd($request->validated());
【讨论】:
【参考方案2】:您实际上不能将 implicit route model binding 用于 store 方法,因为您无法通过 ID 访问尚不存在的模型(因此没有 ID)。来自官方文档:
Laravel 会自动注入 ID 与请求 URI 中相应值匹配的模型实例。
所以你必须手动创建模型,例如这样
public function store(StoreUserRequest $request)
$user = User::create($request->all());
【讨论】:
以上是关于Laravel 类型提示,模型保存时 id 返回 null的主要内容,如果未能解决你的问题,请参考以下文章
Laravel:每当我返回一个模型时,总是返回一个与它的关系