Laravel获取系列的集合

时间:2016-08-08 20:11:21

标签: laravel laravel-5.2

我有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
      }
   }
});

1 个答案:

答案 0 :(得分:3)

最好根据需要急切加载关系模型,然后使用结果。不需要使用if检查。

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

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

}])->get();

更多信息:Eager Loading