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

时间:2015-07-14 23:40:18

标签: php laravel model

我在Laravel的模型中使用范围查询来分配自定义查询功能。这个特殊功能一直在给我提出问题,告诉我必须将参数作为数组提供,而不是String。

/**
 * 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传递给   Illuminate \ 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行

我的代码类似于Laracasts中的教程,其中范围方法的第一个输入是$query

2 个答案:

答案 0 :(得分:1)

尝试将Labs中的L设置为小写。

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

答案 1 :(得分:1)

我正在使用<Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="All.xaml"/> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources> 功能,但在我回到原来的解决方案时忘了删除它。

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    >
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="Main.xaml"/>
    </ResourceDictionary.MergedDictionaries>

    <Style TargetType="{x:Type TextBox}" x:Key="Sub" BasedOn="{StaticResource Main}">
        <Setter Property="BorderBrush" Value="Red"/>
        <Setter Property="BorderThickness" Value="20"/>
    </Style>
</ResourceDictionary>