改进Model类的useGlobalScope方法调用后的全局影响

This commit is contained in:
thinkphp
2016-12-21 12:22:24 +08:00
parent 6bd6d03440
commit a981277c66

View File

@@ -1187,8 +1187,8 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
*/ */
public static function useGlobalScope($use) public static function useGlobalScope($use)
{ {
$model = new static(); $model = new static();
self::$db = $model->db($use); static::$db = $model->db($use);
return $model; return $model;
} }
@@ -1460,10 +1460,12 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
public function __call($method, $args) public function __call($method, $args)
{ {
if (isset(static::$db)) { if (isset(static::$db)) {
$query = static::$db; $query = static::$db;
static::$db = null;
} else { } else {
$query = $this->db(); $query = $this->db();
} }
if (method_exists($this, 'scope' . $method)) { if (method_exists($this, 'scope' . $method)) {
// 动态调用命名范围 // 动态调用命名范围
$method = 'scope' . $method; $method = 'scope' . $method;
@@ -1478,7 +1480,8 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
public static function __callStatic($method, $params) public static function __callStatic($method, $params)
{ {
if (isset(static::$db)) { if (isset(static::$db)) {
$query = static::$db; $query = static::$db;
static::$db = null;
} else { } else {
$query = (new static())->db(); $query = (new static())->db();
} }