聚合模型支持 field定义需要查询的字段

This commit is contained in:
thinkphp
2016-11-09 16:25:06 +08:00
parent 3935ed5915
commit 9b2524d3a1

View File

@@ -61,14 +61,14 @@ class Merge extends Model
{ {
$class = new static(); $class = new static();
$master = $class->name; $master = $class->name;
$fields = self::getModelField($query, $master, '', $class->mapFields); $fields = self::getModelField($query, $master, '', $class->mapFields, $class->field);
$query->alias($master)->field($fields); $query->alias($master)->field($fields);
foreach ($class->relationModel as $key => $model) { foreach ($class->relationModel as $key => $model) {
$name = is_int($key) ? $model : $key; $name = is_int($key) ? $model : $key;
$table = is_int($key) ? $query->getTable($name) : $model; $table = is_int($key) ? $query->getTable($name) : $model;
$query->join($table . ' ' . $name, $name . '.' . $class->fk . '=' . $master . '.' . $class->getPk()); $query->join($table . ' ' . $name, $name . '.' . $class->fk . '=' . $master . '.' . $class->getPk());
$fields = self::getModelField($query, $name, $table, $class->mapFields); $fields = self::getModelField($query, $name, $table, $class->mapFields, $class->field);
$query->field($fields); $query->field($fields);
} }
return $query; return $query;
@@ -81,12 +81,13 @@ class Merge extends Model
* @param string $name 模型名称 * @param string $name 模型名称
* @param string $table 关联表名称 * @param string $table 关联表名称
* @param array $map 字段映射 * @param array $map 字段映射
* @param array $fields 查询字段
* @return array * @return array
*/ */
protected static function getModelField($query, $name, $table = '', $map = []) protected static function getModelField($query, $name, $table = '', $map = [], $fields = [])
{ {
// 获取模型的字段信息 // 获取模型的字段信息
$fields = $query->getTableInfo($table, 'fields'); $fields = $fields ?: $query->getTableInfo($table, 'fields');
$array = []; $array = [];
foreach ($fields as $field) { foreach ($fields as $field) {
if ($key = array_search($name . '.' . $field, $map)) { if ($key = array_search($name . '.' . $field, $map)) {