关联预载入查询支持关联统计

This commit is contained in:
thinkphp
2016-12-22 12:52:13 +08:00
parent cd57d97f36
commit 9657ee01b1
5 changed files with 52 additions and 16 deletions

View File

@@ -13,6 +13,7 @@ namespace think\model\relation;
use think\Db;
use think\db\Query;
use think\Loader;
use think\Model;
use think\model\Relation;
@@ -54,9 +55,10 @@ class HasMany extends Relation
* @param string $subRelation 子关联名
* @param \Closure $closure 闭包
* @param string $class 数据集对象名 为空表示数组
* @param bool $count 是否统计
* @return void
*/
public function eagerlyResultSet(&$resultSet, $relation, $subRelation, $closure, $class)
public function eagerlyResultSet(&$resultSet, $relation, $subRelation, $closure, $class, $count)
{
$localKey = $this->localKey;
$foreignKey = $this->foreignKey;
@@ -83,6 +85,10 @@ class HasMany extends Relation
if (!isset($data[$result->$localKey])) {
$data[$result->$localKey] = [];
}
if ($count) {
// 关联统计
$result->setAttr(Loader::parseName($relation) . '_count', count($data[$result->$localKey]));
}
$result->setAttr($relation, $this->resultSetBuild($data[$result->$localKey], $class));
}
}
@@ -96,9 +102,10 @@ class HasMany extends Relation
* @param string $subRelation 子关联名
* @param \Closure $closure 闭包
* @param string $class 数据集对象名 为空表示数组
* @param bool $count 是否统计
* @return void
*/
public function eagerlyResult(&$result, $relation, $subRelation, $closure, $class)
public function eagerlyResult(&$result, $relation, $subRelation, $closure, $class, $count)
{
$localKey = $this->localKey;
$foreignKey = $this->foreignKey;
@@ -109,6 +116,10 @@ class HasMany extends Relation
if (!isset($data[$result->$localKey])) {
$data[$result->$localKey] = [];
}
if ($count) {
// 关联统计
$result->setAttr(Loader::parseName($relation) . '_count', count($data[$result->$localKey]));
}
$result->setAttr($relation, $this->resultSetBuild($data[$result->$localKey], $class));
}
}