这是我的控制器内部:
$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放入数组中?
谢谢!
答案 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
将收到$b
。GetBook
。在范围为getBook
而不是{{1}}之后,请注意方法名称。