join('presell p', 'p.id=pg.presell_id') ->field($field) ->with([ 'items' ]) ->append([ 'show_goods' ]) ->hidden([ 'content' ]) ->where('p.status', PresellEnum::STATUS_START) ->where('p.start_time', '<=', time()) ->where('p.end_time', '>=', time()) ->order('pg.min_price asc') ->limit($this->limitOffset, $this->limitLength) ->select()->toArray(); foreach ($lists as &$info) { $info['sale_nums'] = array_sum(array_column($info['items'], 'sale_nums')); unset($info['items']); } return $lists; } /** * @inheritDoc */ public function count(): int { return PresellGoods::alias('pg') ->join('presell p', 'p.id=pg.presell_id') ->field('pg.id') ->where('p.status', PresellEnum::STATUS_START) ->where('p.start_time', '<=', time()) ->where('p.end_time', '>=', time()) ->count(); } }