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')
{
$field = 'order_id,order_no,site_name,member_name,create_time,is_settlement,fenxiao_order_id';
$list = model('fenxiao_order')->pageList($condition, $field, $order, $page, $page_size, 'fo', [], 'order_id');
// 解决GROUP BY问题只查询主键ID避免ONLY_FULL_GROUP_BY错误
$field = 'DISTINCT fo.order_id';
$list = model('fenxiao_order')->pageList($condition, $field, $order, $page, $page_size, 'fo', [], 'fo.order_id');
if (!empty($list[ 'list' ])) {
$order_id_arr = [];
foreach ($list['list'] as $k => $v)
{
$order_id_arr[] = $v['order_id'];
}
$order_ids = implode(',', $order_id_arr);
$order_list = model('order')->getList([ [ 'order_id', 'in', $order_ids ] ], 'order_id,name,full_address,mobile,order_status_name');
$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)
{
if($item['order_id'] == $v_order['order_id'])
{
$list[ 'list' ][ $k ] = array_merge($list[ 'list' ][ $k ], $v_order);
}
}
$list[ 'list' ][ $k ][ 'order_goods' ] = [];
foreach ($order_goods_list as $k_order_goods => $v_order_goods)
{
if($item['order_id'] == $v_order_goods['order_id'])
{
$list[ 'list' ][ $k ][ 'order_goods' ][] = $v_order_goods;
}
if (!empty($order_id_arr)) {
$order_ids = implode(',', $order_id_arr);
// 重新查询完整的分销订单数据
$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',
'', 'fo');
// 重新组织数据
$new_list = [];
foreach ($fenxiao_orders as $fenxiao_order) {
$order_list = model('order')->getInfo([ [ 'order_id', '=', $fenxiao_order['order_id'] ] ],
'name,full_address,mobile,order_status_name');
$order_goods_list = model('fenxiao_order')->getList([ [ 'order_id', '=', $fenxiao_order['order_id'] ] ]);
// 合并数据
$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);

View File

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