Laravel范围查询必须是数组类型,字符串给定


Laravel scope query must be of the type array, string given

我在Laravel的模型中使用范围查询来分配自定义查询函数。这个特殊的函数给了我一些问题,告诉我必须以数组的形式提供参数,而不是字符串。

/**
 * Get all labs of a class
 * TODO: Fix error
 * @param $query
 * @param $subjectCode Course subject code i.e. "PHYS"
 * @param $courseNo    Course # i.e. "101" or "%" for everything
 * @return mixed       A list of lectures of the class
 */
public function scopeLabsByClass($query, $subjectCode, $courseNo) {
    return $query
        ->where('subject_code', 'like', $subjectCode)
        ->where('course_no', 'like', $courseNo)
        ->whereIn('instr_type', 'like', LAB)
        ;
}

当我使用Tinker运行它时:

>>> App'SchoolClass::LabsByClass('ece', '201')->get();

我得到以下错误:

PHP错误:参数1传递给'Database'Grammar::parameterize()必须是数组类型,给定的字符串,被调用/home/vagrant/Code/laravel/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php在第311行定义/home/vagrant/Code/laravel/vendor/laravel/framework/src/Illuminate/Database/Grammar.php第113行

我的代码类似于laracast的教程,其中作用域方法的第一个输入是$query

尝试将实验室中的L设置为小写

App'SchoolClass::labsByClass('ece', '201')->get();

我正在玩whereIn函数,但当我回到原来的解决方案时忘记删除它。

/**
 * Get all labs of a class
 * TODO: Fix error
 * @param $query
 * @param $subjectCode Course subject code i.e. "PHYS"
 * @param $courseNo    Course # i.e. "101" or "%" for everything
 * @return mixed       A list of lectures of the class
 */
public function scopeLabsByClass($query, $subjectCode, $courseNo) {
    return $query
        ->where('subject_code', 'like', $subjectCode)
        ->where('course_no', 'like', $courseNo)
        ->where('instr_type', 'like', LAB)
        // LAB is a String constant defined on the top of the doc
        ;
}