提问人:mstdmstd 提问时间:11/5/2022 更新时间:11/5/2022 访问量:31
为什么 squizlabs/php_codesniffer 被标记为错误代码(新投票)?
Why squizlabs/php_codesniffer marked as error code with(new Vote)?
问:
我使用 squizlabs/php_codesniffer laravel 9 项目,我的 phpstorm 2021 显示错误:
Expected parameter of type '\TValue', 'Vote' provided
在模型中,当我在作用域条件下使用表名时:
class QuizQualityResult extends Model
{
protected $table = 'quiz_quality_results';
public function scopeGetByVoteCategories($query, $voteCategoryId= null)
{
// “new Vote” is marked as error
$voteTable = with(new Vote)->getTable();
if (!empty($voteCategoryId)) {
if ( is_array($voteCategoryId) ) {
$query->whereIn( $voteTable . '.vote_category_id', $voteCategoryId);
} else {
$query->where( $voteTable . ' . vote_category_id', $voteCategoryId);
}
}
return $query;
}
如果有办法修复此错误?或者也许在这里使用更好的语法?
谢谢!
答:
1赞
Vlad
11/5/2022
#1
这里不需要 helper with()
$voteTable = (new Vote())->getTable()
Ps:有一种感觉,你的方法没有按照你预期的方式工作。也许你的意思是做以下事情(我可能是错的):
public function scopeGetByVoteCategories($query, $voteCategoryId = null)
{
if (empty($voteCategoryId)) {
return $query;
}
return $query->whereHas('vote', static function ($query) use ($voteCategoryId) {
if (is_array($voteCategoryId)) {
return $query->whereIn('vote_category_id', $voteCategoryId);
}
return $query->where('vote_category_id', $voteCategoryId);
});
}
public function vote()
{
// your relationship
}
评论