count()返回与get()不同的结果

时间:2018-03-27 03:28:15

标签: laravel eloquent

我遇到了

的问题
$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

为什么我的点数有不同的结果,而我的价值观仍然是唯一的?

1 个答案:

答案 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;
相关问题