我在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
;
}