修正scope方法$name参数传入array引起$names变量不存在的异常

1.修正$name为array类型时的BUG
2.范围方法调用支持多参数传入
This commit is contained in:
WeakSun
2016-06-25 13:30:43 +08:00
committed by GitHub
parent 7f13d70d0b
commit f58aeede7a

View File

@@ -978,25 +978,27 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
* 命名范围
* @access public
* @param string|array|Closure $name 命名范围名称 逗号分隔
* @param mixed $params 参数调用
* @param mixed ...$params 参数调用
* @return Model
*/
public static function scope($name, $params = [])
public static function scope($name)
{
$model = new static();
$query = $model->db();
if ($name instanceof \Closure) {
call_user_func_array($name, [ & $query, $params]);
} elseif ($name instanceof Query) {
if ($name instanceof Query) {
return $name;
} else {
if (is_string($name)) {
$names = explode(',', $name);
}
foreach ($names as $scope) {
}
$model = new static();
$params = func_get_args();
$params[0] = $model->db();
if ($name instanceof \Closure) {
call_user_func_array($name, $params);
} elseif (is_string($name)) {
$name = explode(',', $name);
}
if (is_array($name)) {
foreach ($name as $scope) {
$method = 'scope' . trim($scope);
if (method_exists($model, $method)) {
$model->$method($query, $params);
call_user_func_array([$model, $method], $params);
}
}
}