我有一个博客,我想显示动态更改日期开始和结束日期内包含帖子的所有类别。
我有以下 Eloquent 查询:
$Categories = Category::with('Posts')
->whereHas('Posts', function ($query) use ($StartDate, $EndDate) {
$query->where('created_at', '>=', $StartDate);
$query->where('created_at', '<=', $EndDate);
})
->get();
这将仅返回在两个日期之间包含帖子
的返回类别。
我在网上找到了添加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();
这将返回在日期范围内没有帖子
或帖子
的类别
。但是,如果某个类别有帖子
,但其中没有一个在日期范围内,则它们根本不会显示。
如何显示所有类别
并加入日期范围内的帖子
?如果范围内没有帖子,则应返回 null。
最佳答案
经过一些调整..
$Categories = Category::with('Posts', function ($query) use ($StartDate, $EndDate) {
$query->whereBetween('created_at', [$StartDate, $EndDate]);
})
->get();
关于php - Laravel where 二次连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48956922/