where(['status' => StatusEnum::ENABLED]) ->andWhere(['in', 'location', $locals]) ->andWhere(['<', 'start_time', time()]) ->andWhere(['>', 'end_time', time()]) ->andWhere(['merchant_id' => Yii::$app->services->merchant->getNotNullId()]) ->orderBy('sort asc, id desc') ->cache(60) ->asArray() ->all(); $dataByLocal = []; foreach ($data as $datum) { $dataByLocal[$datum['location']][] = $datum; } $result = []; $config = AdvLocalEnum::config(); foreach ($locals as $local) { if (isset($dataByLocal[$local]) && isset($config[$local])) { // 轮播 if ($config[$local]['multiple'] == StatusEnum::ENABLED) { $result[$local] = $dataByLocal[$local]; } else { $result[$local][] = $dataByLocal[$local][0]; } } else { $result[$local] = []; } } return $result; } }