Laravel 4:Scope方法只接受第一个参数?

时间:2014-08-01 14:59:26

标签: laravel laravel-4 scope

这是我的控制器内部:

$a="A";
$b="B";
$res = MyModel::getBook($a,$b);

在" MyModel"内部:

public function scopegetBook($a,$b)

{

var_dump($a,$b);
return null;

}

这只输出" A"和具有通用数据库数据的对象," B"不见了。

范围方法可以处理多个参数吗?或者我必须将$ a和$ b放入数组中?

谢谢!

1 个答案:

答案 0 :(得分:3)

实际上,scope方法中的第一个参数是Query Builder传递的Laravel实例,您应该使用第二个索引中的其他参数,例如:

public function scopeGetBook($query, $a, $b)
{
    //...
}

在此方法中,第一个参数将由Framework传递,如果您这样调用它,您可以使用其他参数:

Modelname::getBook($param1, $param2); // Replace Modelname with real Model name

此处$param1将收到$a$param2将收到$bGetBook。在范围为getBook而不是{{1}}之后,请注意方法名称。