Laravel 辅助加入的问题

Laravel where issue on secondary join

我有一个博客,我想在动态更改开始日期和结束日期内显示帖子的所有类别。

我有以下 eloquent 查询:

$Categories = Category::with('Posts')
                ->whereHas('Posts', function ($query) use ($StartDate, $EndDate) {
                    $query->where('created_at', '>=', $StartDate);
                    $query->where('created_at', '<=', $EndDate);
                })
                ->get();

这将 return 只有 return 个类别,两个日期之间 Posts

我在网上找到添加doesntHave

$Categories = Category::with('Posts')
            ->doesntHave('Posts')
            ->orWhereHas('Posts', function ($query) use ($StartDate, $EndDate) {
                $query->where('created_at', '>=', $StartDate);
                $query->where('created_at', '<=', $EndDate);
            })
            ->get();

这个returns Categories在日期范围内没有postsposts。但是,如果有一个类别有 posts 但其中 none 在日期范围内,则它们根本不会出现。

如何在日期范围内显示所有 categories 并加入 posts?如果范围内没有帖子,它应该 return 为空。

经过一些调整..

$Categories = Category::with('Posts', function ($query) use ($StartDate, $EndDate) {
                        $query->whereBetween('created_at', [$StartDate, $EndDate]);
                    })
                    ->get();