为什么 squizlabs/php_codesniffer 被标记为错误代码(新投票)?

Why squizlabs/php_codesniffer marked as error code with(new Vote)?

提问人:mstdmstd 提问时间:11/5/2022 更新时间:11/5/2022 访问量:31

问:

我使用 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;
    }

如果有办法修复此错误?或者也许在这里使用更好的语法?

谢谢!

Laravel phpCodeSniffer

评论


答:

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
}