改进一对一关联预载入查询 支持使用IN方式 一对一关联类增加setEagerlyType方法用于设置预载入查询方式 默认为JOIN方式,setEagerlyType(1) 使用IN方式

Loader类的parseName方法增加第三个参数 用于驼峰法转换是否首字母大写
This commit is contained in:
thinkphp
2016-12-13 11:43:26 +08:00
parent 8e8355e2d8
commit 082b3bea81
6 changed files with 222 additions and 30 deletions

View File

@@ -414,7 +414,7 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
// 类型转换
$value = $this->readTransform($value, $this->type[$name]);
} elseif ($notFound) {
$method = Loader::parseName($name, 1);
$method = Loader::parseName($name, 1, false);
if (method_exists($this, $method) && $this->$method() instanceof Relation) {
// 不存在该字段 获取关联数据
$value = $this->$method()->getRelation();
@@ -1245,7 +1245,7 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
if (strpos($relation, '.')) {
list($relation, $subRelation) = explode('.', $relation);
}
$relation = Loader::parseName($relation, 1);
$relation = Loader::parseName($relation, 1, false);
$this->$relation()->eagerlyResultSet($resultSet, $relation, $subRelation, $closure, $class);
}
}
@@ -1272,7 +1272,7 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
if (strpos($relation, '.')) {
list($relation, $subRelation) = explode('.', $relation);
}
$relation = Loader::parseName($relation, 1);
$relation = Loader::parseName($relation, 1, false);
$this->$relation()->eagerlyResult($result, $relation, $subRelation, $closure, $class);
}
}