mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-08 23:52:49 +08:00
聚合模型支持 field定义需要查询的字段
This commit is contained in:
@@ -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)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user