Здравствуйте. Есть несколько баз данных. Все идентичны по структуре, разница только в содержании. Есть таблица bets, и соответствующая модель. В таблице bets есть столбик user_id. Он может повторятся. Мне нужно вытащить кол-во уникальных user_id'ов (это реализуется с помощью
$query->distinct('user_id')->count('user_id')
). Но сделать мне это нужно для всех баз данных. Имя баз данных и таблиц дано а так-же сейчас написан такой код:
public static function todayAll() {
$queries = [];
$rooms = []; // get list somehow (HIDEN)
foreach($rooms as $room) {
$query = DB::table(db_table_name($room, self::class))->where('created_at', '>=', Carbon::today())->distinct('user_id');
$queries[] = $query;
}
$result = $queries[0];
for($i=1; $i < count($rooms); $i++) {
$result = $result->unionAll($queries[$i]);
}
return count($result->get());
}
К сожалению я не могу вызвать
count()
перед union'ом, а так-же не могу вызвать его после, так-как тогда он применяется только к первому запросу к тому-же не правильно. Приходится использовать обычный
count
от php. Собственно замена
unionAll
на
union
так-же не помогает. Я уже не знаю что делать. Эту ф-ю обезательно нужно оптимизировать, ибо столько запросов в разные базы это слишком.