我有2个模型,一个用户模型和一个Post模型。我正在尝试获取在特定日期范围之间发布的用户集合。我只是迷失在如何将两个模型结合在一起。两者之间存在一对多的关系。
用户模型:
public function posts()
{
return $this->hasMany('App\Models\Post', 'user_id');
}
所以,我想要一个帖子在日期1和日期之间的用户集合。日期2如果用户在这些日期之间有帖子,我想要收集这些帖子。我知道我可以使用whereBetween作为查询构建器,但是我可以将它用于eloquent吗?另外,如何通过具有这些帖子的用户模型对整个用户模型进行排序? filter()方法怎么样?
$users = Users::all();
$users = $users->filter(function() {
foreach ($users as $user)
{
if ($user->posts->whereBetween(date 1, date 2))
{
return true; //something like that
}
}
});
答案 0 :(得分:3)
最好根据需要急切加载关系模型,然后使用结果。不需要使用if检查。
$users = Users::with(['posts' => function($query) {
$query->whereBetween(date 1, date 2);
}])->get();
更多信息:Eager Loading