fix(src): 解决GROUP BY问题:只查询主键ID,避免ONLY_FULL_GROUP_BY错误

This commit is contained in:
2025-11-25 11:32:31 +08:00
parent 88355a3f48
commit 9ff2492962
2 changed files with 28 additions and 21 deletions

View File

@@ -381,33 +381,40 @@ class FenxiaoOrder extends BaseModel
*/ */
public function getFenxiaoOrderPage($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = 'order_id DESC') public function getFenxiaoOrderPage($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = 'order_id DESC')
{ {
$field = 'order_id,order_no,site_name,member_name,create_time,is_settlement,fenxiao_order_id'; // 解决GROUP BY问题只查询主键ID避免ONLY_FULL_GROUP_BY错误
$list = model('fenxiao_order')->pageList($condition, $field, $order, $page, $page_size, 'fo', [], 'order_id'); $field = 'DISTINCT fo.order_id';
$list = model('fenxiao_order')->pageList($condition, $field, $order, $page, $page_size, 'fo', [], 'fo.order_id');
if (!empty($list[ 'list' ])) { if (!empty($list[ 'list' ])) {
$order_id_arr = []; $order_id_arr = [];
foreach ($list['list'] as $k => $v) foreach ($list['list'] as $k => $v)
{ {
$order_id_arr[] = $v['order_id']; $order_id_arr[] = $v['order_id'];
} }
$order_ids = implode(',', $order_id_arr); if (!empty($order_id_arr)) {
$order_list = model('order')->getList([ [ 'order_id', 'in', $order_ids ] ], 'order_id,name,full_address,mobile,order_status_name'); $order_ids = implode(',', $order_id_arr);
$order_goods_list = model('fenxiao_order')->getList([ [ 'order_id', 'in', $order_ids ] ]);
foreach ($list[ 'list' ] as $k => $item) { // 重新查询完整的分销订单数据
foreach ($order_list as $k_order => $v_order) $fenxiao_orders = model('fenxiao_order')->getList([ [ 'fo.order_id', 'in', $order_ids ] ],
{ 'fo.order_id, fo.order_no, fo.site_name, fo.member_name, fo.create_time, fo.is_settlement, fo.fenxiao_order_id',
if($item['order_id'] == $v_order['order_id']) '', 'fo');
{
$list[ 'list' ][ $k ] = array_merge($list[ 'list' ][ $k ], $v_order); // 重新组织数据
} $new_list = [];
} foreach ($fenxiao_orders as $fenxiao_order) {
$list[ 'list' ][ $k ][ 'order_goods' ] = []; $order_list = model('order')->getInfo([ [ 'order_id', '=', $fenxiao_order['order_id'] ] ],
foreach ($order_goods_list as $k_order_goods => $v_order_goods) 'name,full_address,mobile,order_status_name');
{ $order_goods_list = model('fenxiao_order')->getList([ [ 'order_id', '=', $fenxiao_order['order_id'] ] ]);
if($item['order_id'] == $v_order_goods['order_id'])
{ // 合并数据
$list[ 'list' ][ $k ][ 'order_goods' ][] = $v_order_goods; $new_item = array_merge($fenxiao_order, [
} 'address' => $order_list['full_address'] ?? '',
'mobile' => $order_list['mobile'] ?? '',
'order_status_name' => $order_list['order_status_name'] ?? '',
'order_goods' => $order_goods_list
]);
$new_list[] = $new_item;
} }
$list['list'] = $new_list;
} }
} }
return $this->success($list); return $this->success($list);

View File

@@ -121,7 +121,7 @@ class Model
/** /**
* 获取分页列表数据 * 获取分页列表数据
* @param array $condition * @param array $condition
* @param bool $field * @param bool | string $field
* @param string $order * @param string $order
* @param int $page * @param int $page
* @param int $list_rows * @param int $list_rows