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
在日期范围内没有posts
或posts
。但是,如果有一个类别有 posts
但其中 none 在日期范围内,则它们根本不会出现。
如何在日期范围内显示所有 categories
并加入 posts
?如果范围内没有帖子,它应该 return 为空。
经过一些调整..
$Categories = Category::with('Posts', function ($query) use ($StartDate, $EndDate) {
$query->whereBetween('created_at', [$StartDate, $EndDate]);
})
->get();
我有一个博客,我想在动态更改开始日期和结束日期内显示帖子的所有类别。
我有以下 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
在日期范围内没有posts
或posts
。但是,如果有一个类别有 posts
但其中 none 在日期范围内,则它们根本不会出现。
如何在日期范围内显示所有 categories
并加入 posts
?如果范围内没有帖子,它应该 return 为空。
经过一些调整..
$Categories = Category::with('Posts', function ($query) use ($StartDate, $EndDate) {
$query->whereBetween('created_at', [$StartDate, $EndDate]);
})
->get();