Laravel9项目中PhpStorm检测squizlabs/php_codesniffer报new Vote类型错误
问题修复与优化写法
错误原因
你误用了Laravel的with()辅助函数——这个函数是用来做关联预加载的,参数得是关联名称(字符串)、关联数组或者闭包,不能传模型实例,所以PhpStorm和PHP_CodeSniffer才会报类型不匹配的错误。
修复方案&更优写法
直接用模型的静态方法获取表名就好,这是Laravel最推荐的方式:
$voteTable = Vote::getTable();
完全不用实例化模型,既解决了类型错误,代码也更简洁。
如果确实有特殊场景需要实例化模型,直接去掉with()包裹就行:
$voteTable = (new Vote)->getTable();
补充:with()的正确用法示例
这个函数是用来预加载Eloquent关联的,比如你要预加载QuizQualityResult的vote关联:
// 基础预加载 QuizQualityResult::with('vote')->get(); // 带条件的预加载 QuizQualityResult::with(['vote' => function ($query) { $query->where('status', 1); }])->get();
内容的提问来源于stack exchange,提问作者mstdmstd
相关产品推荐
相关产品推荐

