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

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\Pivot;
use think\model\Relation;
@@ -80,9 +81,10 @@ class BelongsToMany 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;
@@ -110,7 +112,10 @@ class BelongsToMany extends Relation
if (!isset($data[$result->$pk])) {
$data[$result->$pk] = [];
}
if ($count) {
// 关联统计
$result->setAttr(Loader::parseName($relation) . '_count', count($data[$result->$pk]));
}
$result->setAttr($relation, $this->resultSetBuild($data[$result->$pk], $class));
}
}
@@ -124,9 +129,10 @@ class BelongsToMany 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;
@@ -141,6 +147,10 @@ class BelongsToMany extends Relation
if (!isset($data[$pk])) {
$data[$pk] = [];
}
if ($count) {
// 关联统计
$result->setAttr(Loader::parseName($relation) . '_count', count($data[$pk]));
}
$result->setAttr($relation, $this->resultSetBuild($data[$pk], $class));
}
}