我遇到了
的问题$query = $game->releases()->select(['created_at'])->unionAll(
$game->seasons()->select(['created_at'])
);
foreach ($query->get() as $result) {
echo $result->created_at.PHP_EOL;
}
dd($query->count('created_at'));
我可以迭代结果并看到有3条记录,但是当我聚合计数时,我可以看到只有2条,而我有3个唯一值。
2018-03-23 03:20:07
2018-03-24 03:20:07
2018-03-25 03:20:07
count: 2
为什么我的点数有不同的结果,而我的价值观仍然是唯一的?
答案 0 :(得分:0)
我已经成功解决了这个问题。问题出在我的语法上,count()
发生在联合的第一部分,而不是合并的结果。为了统计所有结果,我不得不采用这种方法:
$unionQuery = $game->releases()->select(['created_at'])->unionAll(
$game->seasons()->select(['created_at'])
);
$records = DB::table(DB::raw("(".$unionQuery->toSql().") AS s"))
->selectRaw('COUNT(*) as updateCount')
->mergeBindings($unionQuery->getBaseQuery())
->first()->updateCount;