Laravel 获取集合的集合

Mat*_*rce 1 laravel laravel-5

我有 2 个模型,一个用户模型和一个帖子模型。我正在尝试获取在特定日期范围内发布的用户的集合。我只是不知道如何将这两个模型结合在一起。两者之间存在一对多的关系。

用户型号:

public function posts()
{
    return $this->hasMany('App\Models\Post', 'user_id');
}
Run Code Online (Sandbox Code Playgroud)

因此,我想要一个帖子在日期 1 和日期 2 之间的用户集合,并且如果用户在这些日期之间有帖子,我想要这些帖子的集合。我知道我可以使用 whereBetween 作为查询生成器,但是我可以将其用于雄辩吗?另外,如何按包含这些帖子的用户模型对整个用户模型进行排序?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
      }
   }
});
Run Code Online (Sandbox Code Playgroud)

Zay*_*Ali 5

最好根据需要立即加载关系模型,然后使用结果。无需使用 if 检查。

$users = Users::with(['posts' => function($query) {

    $query->whereBetween(date 1, date 2);

}])->get();
Run Code Online (Sandbox Code Playgroud)

更多信息:预加载