Я пытаюсь выполнить некоторые подвыборы DB :: raw, используя Laravel, но мне возвращается 0, даже если я проверяю его и проверяю DB, есть много записей, соответствующих критериям.
My запрос выглядит так:
$currentUnixTime = time();
$dt12 = $currentUnixTime - (12*60*60);
$dt24 = $currentUnixTime - (24*60*60);
$dt48 = $currentUnixTime - (2*24*60*60);
$dt168 = $currentUnixTime - (7*24*60*60);
$updates = DB::table("portals")
->select(
DB::raw("(SELECT COUNT(guid) FROM portals) AS total", []),
DB::raw("(SELECT COUNT(guid) FROM portals WHERE addedTS > :dt) AS 'dt24'", array(":dt" => $dt24)),
DB::raw("(SELECT COUNT(guid) FROM portals WHERE addedTS > :dt) AS 'dt48'", array(":dt" => $dt48)),
DB::raw("(SELECT COUNT(guid) FROM portals WHERE addedTS > :dt) AS 'dt168'", array(":dt" => $dt168)),
DB::raw("(SELECT COUNT(guid) FROM portals WHERE updatedTS > :dt) AS 'ut168'", array(":dt" => $dt168))
)
->first();
Первый DB::raw("(SELECT COUNT(guid) FROM portals) AS total")
возвращает число, а остальные возвращают 0, что заставляет меня подозревать, что это связано с включением оператора WHERE
.
Вот мой результат:
{"total":"47180","dt24":"0","dt48":"0","dt168":"0","ut168":"0"}
РЕДАКТИРОВАТЬ: Попробовал предложение от Антония, но получил тот же результат.
$updates = DB::table("portals")
->select(
DB::raw("(SELECT COUNT(guid) FROM portals) AS total,
(SELECT COUNT(guid) FROM portals WHERE addedTS > ?) AS 'dt24',
(SELECT COUNT(guid) FROM portals WHERE addedTS > ?) AS 'dt48',
(SELECT COUNT(guid) FROM portals WHERE addedTS > ?) AS 'dt168',
(SELECT COUNT(guid) FROM portals WHERE updatedTS > ?) AS 'ut168'",
[$dt24, $dt48, $dt168, $dt168]
)
)
->first();
Есть идеи?
Спасибо ! :)