一对多问题,请问这是哪里出错了?

laravel 9,代码实际可以运行,数据库有数据,但是编辑器显示有错误?

这是怎么回事呢?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
DogLoML
最佳答案

如图的三种写法都可以

file

file

file

1年前 评论
facetoface (楼主) 1年前
讨论数量: 16
DogLoML

编辑器无法解析出auth::user()返回的是user模型,所以会显示你调用了未定义的方法。解决办法:将auth::user()放到getUser方法里面,然后在注释的@returen告诉编辑器可能返回user。或者保存到一个user变量,然后用行内注释,给$user添加User类型
/* @var User $user*/这样就行了

1年前 评论
facetoface (楼主) 1年前
facetoface (楼主) 1年前
facetoface (楼主) 1年前

没有任何错误,可以执行,数据库里面有数据,创建成功了,但是编辑器这里有个波浪符号,不知道为啥会这样

1年前 评论
Epona 1年前
facetoface (作者) (楼主) 1年前

这个IDE报错你的代码没关系,目测使用的是 VSCODE,建议换 PHPStorm。

因为 Auth::user() 最终指向的类文件是 your_project/vendor/laravel/framework/src/Illuminate/Foundation/Auth/User.php,IDE 并不知道框架使用了 Provider 将最终的用户模型指向了 Model\User.php,如果不想换 IDE 建议安装 Laravel idea 之类的插件试试,或者按照楼上的方法说的,定义一个方法,然后指定返回类型为 Models\User.php

1年前 评论
facetoface (楼主) 1年前
facetoface (楼主) 1年前
facetoface (楼主) 1年前
MArtian (作者) 1年前
DogLoML

如图的三种写法都可以

file

file

file

1年前 评论
facetoface (楼主) 1年前

原因是类型无法识别

/* @var User $user*/
$user = Auth::user();
$user->todoes()->create(...);

另外解决这个问题后,编辑器如果开了拼写检查插件的话,可能在 todoes 这里还会有提示拼写问题,应该是 todos

1年前 评论
facetoface (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!